6/ 30 파이썬 공부
1. 백준 8558 Silnia
Niech n będzie nieujemną liczbą całkowitą. Liczbę n! (czytaj n-silnia) definiuje się następująco. Jeśli n ≤ 1, to n! = 1. Dla n > 1, n! jest równe iloczynowi wszystkich liczb od 1 do n, czyli n! = 1 * 2 * ... * n. Na przykład 4! = 1 * 2 * 3 * 4 = 24.
Napisz program, który
- wczyta ze standardowego wejścia nieujemną liczbę całkowitą n,
- policzy cyfrę jedności w zapisie dziesiętnym liczby n!,
- wypisze wynik na standardowe wyjście.
Pierwszy i jedyny wiersz standardowego wejścia zawiera dokładnie jedną nieujemną liczbę całkowitą n, 0 ≤ n ≤ 30 000.
W pierszym i jedynym wierszu standardowego wyjścia Twój program powinien zapisać dokładnie jedną cyfrę równą cyfrze jedności w zapisie dziesiętnym liczby n!.
(이게 무슨 언어지 진짜...)
>>>해석
음이 아닌 정수 n이 있습니다. (n 팩토리얼이라 읽는) n!은 다음과 같이 정의합니다.
n <= 1이면 n! = 1입니다. n > 1일 경우, n!은 1부터 n까지의 곱과 같아 n! = 1 * 2 * ... * n입니다.
예를 들어, 4! = 1 * 2 * 3 * 4 = 24입니다.
아래의 조건을 만족하는 프로그램을 작성합시다.
- 표준 입력으로 음이 아닌 정수 n을 입력 받는다.
- n!의 십진수 표기에서 일의 자리 수를 저장한다.
- 그 값을 표준 출력에 표시한다.
유일한 줄에 0 <= n <= 30000인 음이 아닌 정수 n이 주어집니다.
유일한 줄에 n!의 십진법 표기에서 일의 자리 수를 나타내는 한 자리를 출력합니다.
>>>코드
n = int(input())
r = 1
for i in range(n):
r = r*(i+1)
print(r%10)
2. 백준 8723 Payyki
Bajtuś znalazł w lesie 3 patyki. Teraz chciałby wiedzieć, czy może z nich zbudować trójkąt prostokątny lub równoboczny. Bajtuś nie może łamać patyków, może je wykorzystać tylko w całości.
Pierwszy wiersz wejścia zawiera trzy liczby całkowite a, b, c (1 ≤ a, b, c ≤ 1000), oznaczające odpowiednio długości pierwszego, drugiego i trzeciego patyka.
Pierwszy i jedyny wiersz wyjścia powinien zawierać jedną liczbę: 0 - jeśli Bajtuś nie może zbudować, ani trójkąta prostokątnego ani równobocznego, 1 - jeśli Bajtuś może zbudować tylko trójkąt prostokątny, 2 - jeśli Bajtuś może zbudować tylko trójkąt równoboczny,
(이게 무슨 언어지22)
>>>해석
바이투스는 숲에서 막대기 3개를 발견했습니다. 그는 막대기로 직각삼각형이나 정삼각형을 만들 수 있는지 궁금합니다. 바이투스는 막대기를 부러뜨릴 수 없으며, 그대로만 사용할 수 있습니다.
첫 줄에 각각 첫 번째 막대, 두 번째 막대, 세 번째 막대의 길이를 나타내는 세 정수 a, b, c (1 <= a, b, c <= 1000)가 주어집니다.
오로지 한 줄에 하나의 숫자를 출력합니다: 바이투스가 직각삼각형이나 정삼각형을 만들 수 없다면 0, 직각삼각형만 만들 수 있다면 1, 정삼각형만 만들 수 있다면 2를 출력합니다.
>>>코드
l = list(map(int, input().split()))
l.sort()
if l[0] == l[1] and l[1] == l[2]:
print(2)
elif l[2]**2 == l[0]**2 + l[1]**2:
print(1)
else:
print(0)
3. 백준 8760 Schronisko
Kiedy Hektor zajmował się realizacją projektu HektorJudge, jego kolega Wiktor uznał, że życie nie powinno składać się wyłącznie z siedzenia przy komputerze i wybrał się na wycieczkę w góry. Kiedy wieczorem dotarł do schroniska ze zdziwieniem odkrył, że nie tylko on wpadł na pomysł spędzenia weekendu w górach - schronisko było pełne turystów!
W tej kryzysowej sytuacji kierownik schroniska był zmuszony zorganizować turystom nocleg na podłodze w głównej sali schroniska. Sala ma postać prostokąta złożonego z W*K kwadratowych pól ułożonych w prostokąt o wymiarach W wierszy na K kolumn. Każdy turysta zajmuje dokładnie dwa sąsiednie (albo w pionie albo w poziomie) pola. Ile turystów można maksymalnie ułożyć w sali o zadanych wymiarach tak, aby każde pole było zajęte maksymalnie przez jednego turystę? Wiktor, jako matematyk-informatyk natychmiast obliczył prawidłowy wynik.
W pierwszej linii znajduje się liczba naturalna Z ( 1 <= Z <= 10 ) oznaczająca liczbę zestawów testowych. Następnie opisywane są kolejne zestawy.
Opis pojedynczego zestawu testowego składa się z jednej linii zawierającej dwie oddzielone pojedynczą spacją dodatnie całkowite W i K (1 <= W, K <= 1000).
Dla każdego zestawu testowego należy w osobnej linii wypisać maksymalną liczbę turystów którzy mogą jednocześnie przenocować w sali schroniska. Kolejność wypisywanych odpowiedzi musi odpowiadać kolejności zestawów na wejściu.
(이게 무슨 언어지333)
>>>해석
헥토르가 HektorJudge 프로젝트를 하는 동안, 동료 빅토르는 컴퓨터 앞에만 앉아 있기에는 인생이 아깝다 생각해 등산 여행을 갔습니다. 저녁에 대피소에 도착한 후, 그는 주말을 산에서 보내겠다는 생각을 한 게 자신만이 아니라는 것에 놀랐습니다 - 대피소는 여행객으로 가득 차 있었습니다!
예기치 못한 상황이 닥치자, 대피소 관리자는 하루 동안 여행객을 대피소 본관에 질서 있게 배정하는 임무를 맡게 됐습니다. 본관은 정사각형 모양의 구역이 W개의 열과 K개의 행을 이루는 W * K 크기의 직사각형 공간입니다. 각 여행객은 (가로든 세로든) 인접한 두 구역을 차지합니다. 본관의 크기가 주어지고 한 구역을 최대 한 명의 여행객에 배정한다고 할 때, 최대 몇 명의 여행객을 본관에 배정할 수 있습니까? 컴퓨터 과학자이자 수학자인 빅토르는 단숨에 정확한 답을 도출했습니다.
테스트 케이스의 수를 나타내는 자연수 Z (1 <= Z <= 10)가 첫 줄에 주어집니다.
이후 테스트 케이스가 묘사됩니다.
한 줄의 테스트 케이스에 두 양의 정수 W, K(1 <= W, K <= 1000)가 하나의 공백을 두고 주어집니다.
각 테스트 케이스에 대해, 하루 동안 동시에 본관에 머무를 수 있는 최대 여행객의 수를 별개의 줄에 출력합니다. 입력에 주어진 테스트 케이스의 순서에 맞춰 출력해야 합니다.
>>>코드
for _ in range(int(input())):
w, k = map(int, input().split())
print(w*k//2)
4. 백준 10480 Oddities
Some numbers are just, well, odd. For example, the number 3 is odd, because it is not a multiple of two. Numbers that are a multiple of two are not odd, they are even. More precisely, if a number n can be expressed as n = 2 ∗ k for some integer k, then n is even. For example, 6 = 2 ∗ 3 is even.
Some people get confused about whether numbers are odd or even. To see a common example, do an internet search for the query “is zero even or odd?” (Don’t search for this now! You have a problem to solve!)
Write a program to help these confused people.
Input begins with an integer 1 ≤ n ≤ 20 on a line by itself, indicating the number of test cases that follow. Each of the following n lines contain a test case consisting of a single integer −10 ≤ x ≤ 10.
For each x, print either ‘x is odd’ or ‘x is even’ depending on whether x is odd or even.
>>>해석
어떤 수들은 한 마디로 홀로 남았습니다. 예를 들어 3은 홀로 남은 수인데, 2의 배수가 아니기 때문입니다.
2의 배수는 홀로 남은 수가 아닌 짝수입니다.
정확하게 말하면, 만약 숫자 n이 어떤 정수 k에 대해 n = 2 * k로 표현될 수 있다면, n은 짝수입니다.
예를 들어, 6 = 2 * 3이므로 짝수입니다.
몇몇 사람들은 수가 홀수인지 짝수인지 헷갈려 합니다.
그 예시로, 인터넷에 질문 "0이 짝수인가요, 홀수인가요?"를 검색해봅시다.
(지금은 검색하지 마세요! 풀어야 하는 문제가 있습니다!)
이렇게 헷갈리는 사람들을 돕는 프로그램을 작성합시다.
입력은 이후 나올 테스트 케이스의 수를 나타내는 하나의 정수 1 <= n <= 20으로 시작됩니다. 이후 n개의 줄에 -10 <= x <= 10으로 나타낸 테스트 케이스가 주어집니다.
각 x에 대해, x가 홀수인지 짝수인지 판별해 'x is odd' 또는 'x is even'을 출력합니다.
>>>코드
for _ in range(int(input())):
n = int(input())
if n%2 == 0:
print('%d is even' %(n))
else:
print('%d is odd' %(n))
5. 백준 8674 Tabliczka
Mama przyniosła Piotrusiowi i Pawełkowi tabliczkę czekolady o wymiarach a i b. Chłopcy chcą podzielić tabliczkę za pomocą jednego prostego łamania, wzdłuż kostek pionowych lub poziomych. Chłopcy chcą podzielić tabliczkę jak najbardziej sprawiedliwie, czyli tak, aby różnica pomiędzy kawałkami, które przypadną na każdego z nich, była jak najmniejsza.
W pierwszym i jedynym wierszu wejścia znajdują się dwie liczby całkowite a, b (1 ≤ a, b ≤ 232), oznaczające odpowiednio liczbę kostek znajdujących się w każdym wierszu oraz każdej kolumnie tabliczki czekolady.
W pierwszym i jedynym wierszu wyjścia powinna się znaleźć jedna liczba całkowita, równa różnicy pomiędzy kawałkami, które dostaną chłopcy.
>>>해석
엄마가 피오트르쇼비와 파벨코비에게 a * b개의 칸으로 이루어진 초콜릿 바를 사줬습니다.
아이들은 가로 줄이나 세로 줄에 맞춰 딱 한 번 초콜릿 바를 잘라 나누려고 합니다. 아이들은 최대한 공평하게, 달리 말해 두 명이 갖는 초콜릿 바의 크기의 차가 최소가 되도록 초콜릿 바를 나누려고 합니다.
한 줄에 각각 초콜릿 바의 열과 행에 있는 칸의 수를 나타내는 a, b (1 <= a, b <= 2^32)가 주어집니다.
딱 한 줄에 두 아이가 받는 초콜릿 바 조각의 크기의 차를 나타내는 정수를 출력합니다.
>>>코드
a, b = map(int, input().split())
if a%2 == 0 or b%2 == 0:
print(0)
else:
print(min(a,b))
6. 백준 18411 試験 (Exam)
JOI 君は情報の試験を 3 回受けた.試験の点数はすべて 0 以上 100 以下の整数である.
JOI 君の成績は 3 回の試験の点数のうち高い方から 2 つを足し合わせた合計によって決まる.
3 回の試験の点数 A, B, C が与えられたとき,3 回の試験の点数のうち高い方から 2 つを足し合わせた合計を出力するプログラムを作成せよ.
入力は以下の形式で標準入力から与えられる.
A B C
3 回の試験の点数のうち高い方から 2 つを足し合わせた合計を 1 行で出力せよ.
>>>해석
JOI 군은 정보 시험을 3번 봤습니다. 시험 점수는 전부 0 이상 100 이하의 정수입니다.
JOI 군의 성적은 3회 시험 점수 중 가장 높은 두 개를 합한 값입니다.
3회의 시험 점수 A, B, C가 주어질 때, 3회 시험의 점수 중 높은 두 개를 더한 합계를 출력하는 프로그램을 작성합시다.
이하와 같이 표준 입력이 주어집니다.
A B C
3회 시험 점수 중 높은 2개를 더한 값을 한 줄에 출력합니다.
>>>코드
a, b, c = map(int, input().split())
print(a+b+c-min(a,b,c))
7. 백준 15474 鉛筆 (Pencils)
JOI 君は鉛筆を N 本買うために近くの文房具店に行くことにした.
文房具店では鉛筆が一定の本数ずつのセットで売られている.
セット X は A 本で B 円,セット Y は C 本で D 円である.
JOI 君はセット X かセット Y の一方を選び,選んだセットをいくつか購入する.両方のセットを購入することはできない.
N 本以上の鉛筆を得るために必要な金額の最小値を求めよ.
入力は以下の形式で標準入力から与えられる.
N A B C D
JOI 君が N 本以上の鉛筆を手に入れるのに必要な金額の最小値を出力せよ.
>>>해석
JOI 군은 연필을 N개 사기 위해 가까운 문방구에 가기로 했습니다.
문방구에서는 연필을 일정 개수를 묶은 세트로 판매하고 있습니다.
세트 X는 연필 A개로 이루어져 B엔, 세트 Y는 연필 C개로 이루어져 D엔입니다.
JOI 군은 세트 X와 세트 Y 중 하나를 골라, 고른 세트를 몇 개 구매합니다.
양쪽의 세트를 모두 구입하는 것은 불가능합니다.
N개 이상의 연필을 갖기 위해 필요한 금액의 최솟값을 구합시다.
아래의 형식으로 표준 입력이 주어집니다.
N A B C D
JOI 군이 N개 이상의 연필을 사기 위해 필요한 금액의 최솟값을 출력합니다.
>>>코드
n, a, b, c, d = map(int, input().split())
if n%a == 0:
price1 = n//a * b
else:
price1 = (n//a +1) * b
if n%c == 0:
price2 = n//c * d
else:
price2 = (n//c +1) * d
print(min(price1, price2))
8. 백준 8710 Koszykarz
Kozik pragnie zostać koszykarzem. Po rozmowie z trenerem okazało się, że jest za niski. Kozik jest jednak tak zdeterminowany, że chce spełnić wymagania trenera, nawet jeśli okazałoby się to oszustwem. Wpadł więc na genialny pomysł robienia sobie guzów na głowie, aż osiągnie wymagany wzrost. Zauważył, że przy każdym uderzeniu guz się powiększa o m cm. Kozik zastanawia się ile minimalnie razy będzie musiał się uderzyć.
W pierwszej linii wejścia 3 liczby całkowite: k, w, m (1 ≤ k ≤ 200, 1 ≤ w, m ≤ 109), oznaczające odpowiednio wysokość Kozika, wymaganą przez trenera wysokość oraz wartość powiększania się guza po każdym uderzeniu.
Pierwszy i jedyny wiersz wyjścia powinien zawierać jedną liczbę całkowitą równą minimalnej liczbie uderzeń, które musi wykonać Kozik.
>>>해석
코직은 농구 선수가 꿈입니다. 하지만 코치에게 얘기를 하니 키가 너무 작다는 얘기를 들었습니다.
하지만 코직은 열정으로 가득했으므로 편법을 쓰더라도 코치의 요구 조건을 맞추려 합니다.
코직은 원하는 키가 될 때까지 머리에 혹을 만든다는 엄청난 아이디어를 떠올렸습니다.
그는 한 번 때릴 때마다, 혹이 m cm씩 자란다는 것을 발견했습니다.
코직은 자기를 최소 얼마나 때려야 할지 궁금합니다.
한 줄에 각각 코직의 키, 코치가 요구한 키, 한 번 때릴 때마다 늘어나는 혹의 길이를 나타내는 세 정수 k, w, m (1 <= k <= 200, 1 <= w, m <= 10 ^ 9)가 주어집니다.
오로지 한 줄에 코직이 스스로를 때려야 하는 최소 횟수를 나타낸 하나의 정수를 출력합니다.
>>>코드
k, w, m = map(int, input().split())
if (w-k)%m == 0:
print((w-k)//m)
else:
print((w-k)//m + 1)
9. 백준 18408 3 つの整数 (Three Integers)
3 つの整数 A, B, C が与えられる.A, B, C はそれぞれ 1 または 2 である.1 と 2 のうち,どちらが多くあるか.
入力は以下の形式で標準入力から与えられる.
A B C
1 と 2 のうち,個数が多い方を出力せよ.
>>>해석
세 정수 A, B, C가 주어집니다. A, B, C는 각각 1 또는 2입니다. 1과 2 중, 더 많은 것은 무엇입니까.
아래와 같은 형식으로 표준 입력이 주어집니다.
A B C
1과 2 중, 더 많은 쪽을 출력합니다.
>>>코드
l = list(map(int, input().split()))
if l.count(1)>l.count(2):
print(1)
else:
print(2)
10. 백준 24075 計算 (Calculation)
2 つの整数 A, B が与えられる.A+B, A-B の中で最大の値と最小の値を順に出力せよ.
入力は以下の形式で標準入力から与えられる.
A B
出力は 2 行からなる.
1 行目に,A+B, A-B の中で最大の値を出力せよ.
2 行目に,A+B, A-B の中で最小の値を出力せよ.
>>>해석
2개의 정수 A, B가 주어집니다. A+B, A-B 중 최댓값과 최솟값을 순서대로 출력합시다.
아래의 형식으로 표준 입력이 주어집니다.
A B
출력은 두 줄입니다.
첫째 줄에는, A+B, A-B 중 최댓값을 출력합니다.
둘째 줄에는, A+B, A-B 중 최솟값을 출력합니다.
>>>코드
a, b = map(int, input().split())
print(max(a+b, a-b))
print(min(a+b, a-b))
'백준 > 백준 파이썬' 카테고리의 다른 글
백준 파이썬 Today I Learn 2023.07.02 (0) | 2023.07.03 |
---|---|
백준 파이썬 Today I Learn 2023.07.01 (0) | 2023.07.01 |
백준 파이썬 Today I Learn 2023.06.29 (0) | 2023.07.01 |
백준 파이썬 Today I Learn 2023.06.28 (0) | 2023.06.30 |
백준 파이썬 Today I Learn 2023.06.27 (0) | 2023.06.30 |