7/ 02 파이썬 공부
1. 백준 15025 Judging Moose
When determining the age of a bull moose, the number of tines (sharp points), extending from the main antlers, can be used. An older bull moose tends to have more tines than a younger moose. However, just counting the number of tines can be misleading, as a moose can break off the tines, for example when fighting with other moose. Therefore, a point system is used when describing the antlers of a bull moose.
The point system works like this: If the number of tines on the left side and the right side match, the moose is said to have the even sum of the number of points. So, “an even 6-point moose”, would have three tines on each side. If the moose has a different number of tines on the left and right side, the moose is said to have twice the highest number of tines, but it is odd. So “an odd 10-point moose” would have 5 tines on one side, and 4 or less tines on the other side.
Can you figure out how many points a moose has, given the number of tines on the left and right side?
The input contains a single line with two integers ℓ and r, where 0 ≤ ℓ ≤ 20 is the number of tines on the left, and 0 ≤ r ≤ 20 is the number of tines on the right.
Output a single line describing the moose. For even pointed moose, output “Even x” where x is the points of the moose. For odd pointed moose, output “Odd x” where x is the points of the moose. If the moose has no tines, output “Not a moose”
>>>해석
무스의 나이는 가장 큰 뿔에서 뻗어 나온 가지(뾰족한 부분)의 수로 확인할 수 있습니다.
나이가 많은 무스는 보통 나이가 어린 무스보다 많은 가지를 지니고 있습니다.
하지만 다른 무스와 싸우거나 할 때 가지가 손상될 수 있으므로, 가지의 수만 가지고 판단하는 것은 정확하지 않습니다. 따라서 무스의 뿔에는 포인트 시스템이 적용됩니다.
포인트 시스템은 아래와 같습니다:
만약 왼쪽과 오른쪽의 가지 수가 같다면, 그 무스는 짝수 포인트 합을 지녔다고 말합니다.
따라서 "짝수 6포인트 무스"는 양쪽에 3개의 가지를 가진 무스입니다.
만약 무스의 왼쪽과 오른쪽 가지 수가 다르다면, 그 무스는 가지가 많은 쪽을 기준으로 2배 값의 홀수 포인트 합을 지닌다고 말합니다. 따라서 "홀수 10포인트 무스"는 한쪽에 5개의 가지가 있고, 반대쪽에 4개 이하의 가지가 있는 무스입니다.
왼쪽과 오른쪽 가지의 수가 주어졌을 때, 무스가 어떤 포인트를 지니는지 알 수 있습니까?
한 줄에 두 정수 l, r이 주어지는데, 0 <= l <= 20은 왼쪽 가지의 수를, 0 <= r <= 20은 오른쪽 가지의 수를 뜻합니다.
무스를 표현하는 한 줄을 출력합니다.
짝수 포인트 무스에 대해서는, 무스가 x포인트라 할 때 "Even x"를 출력합니다.
홀수 포인트 무스에 대해서는, 무스가 x포인트라 할 때 "Odd x"를 출력합니다.
무스가 가지를 가지고 있지 않다면, "Not a moose"를 출력합니다.
>>>코드
l, r = map(int, input().split())
if l == 0 and r == 0:
print('Not a moose')
elif l == r:
print('Even %d' %(l+r))
else:
print('Odd %d' %(max(l,r)*2))
2. 백준 24751 Betting
The popular streaming platform switch.tv just unveiled their newest feature: switch betting. Streamers can now get their viewers to bet on two different options using switch points (patented).
Each viewer bets some number of switch points for one of the two options. The total amount of switch points bet by everyone is called the prize pool. The streamer will choose one of the options as the winner and the prize pool is split (not necessarily equally) between all the viewers who bet on that option; the more you bet on the option, the more of the prize pool you receive. In particular, if you contributed p% of all the bets for one of the options and that option wins, then you receive p% of the total prize pool.
The switch.tv team has come to you to compute what the switch point payout is for each viewer if their selected option wins. To do this, they ask you to find the switch-payout-ratio for each of the two options. Since the payout to each viewer is proportional to the number of switch points they put into the bet, the switch team will be able to use this ratio to determine each viewer's winnings.
For example, suppose a streamer created a switch bet where three viewers participated. Two viewers bet 10 and 30 switch points on option one and the last viewer bets 10 switch points on option two. We can see that option one has 80% of the bets and option two has 20% of the bets.
If option one wins, then the two viewers who bet on that receive 12.5 and 37.5 switch points, respectively, which means that the switch-payout-ratio is 1:1.25 for option one. If option two wins, then the single viewer who bets on that receives 50 switch points, which means that the switch-payout-ratio is 1:5.
Given the percentage of total bets for option one, help switch.tv by computing the switch-payout-ratio for the two options.
The input consists of one integer a (0 < a < 100), which is the percentage of switch points bet on option one.
출력
For each option (option one, then option two), display the number x such that 1:x is the switch-payout-ratio for that option. Your answer should have an absolute or relative error of at most
$10^{-3}$.
>>>해석
유명한 스트리밍 플랫폼 스위치 TV가 새로운 기능을 공개했습니다: 스위치 베팅. 스트리머는 이제 시청자가 두 가지 선택지를 두고 (스위치만의) 스위치 포인트를 이용해 베팅하도록 만들 수 있습니다.
각 시청자는 두 선택지 중 하나에 스위치 포인트를 걸 수 있습니다.
모든 사람이 건 스위치 포인트의 총 합계를 상금이라 부릅니다. 스트리머는 하나의 선택지를 승자로 만들어 그 선택지를 선택한 시청자들에게 (꼭 동일하지는 않게) 상금을 분배합니다; 당신이 선택지에 더 많은 돈을 걸었다면, 더 많은 상금을 가져갑니다. 더 자세히 말하자면, 당신이 하나의 선택지에 걸린 금액에 p%만큼 기여했고 그 옵션이 이겼다면, 당신은 상금의 p%를 가져갑니다.
스위치 TV 팀은 당신이 하나의 선택지가 승리했을 때 각 시청자가 상금으로 얼마만큼 가져가는지 계산하기를 바랍니다. 이를 위해서, 그들은 두 가지 선택지에 대해 스위치 포인트와 상금의 비율을 계산하려 합니다. 각 시청자에게 돌아가는 상금의 비율은 그들이 건 돈의 비율에 비례하기에, 스위치 팀은 각 시청자가 가져가는 상금의 양을 판단할 때 이 비율을 사용할 것입니다.
예를 들어, 스트리머가 세 시청자가 참여한 스위치 베팅을 했다고 가정합시다. 두 시청자가 각각 10 스위치 포인트와 30 스위치 포인트를 첫 번째 선택지에 걸었고, 남은 시청자는 두 번째 선택지에 10 스위치 포인트를 걸었습니다. 당신은 첫 번째 선택지가 80%의 금액을 차지하고, 두 번째 선택지가 20%의 금액을 차지함을 알 수 있습니다.
첫 번째 선택지가 이길 경우, 이 선택지를 고른 두 시청자는 각각 12.5, 37.5 스위치 포인트를 가져가므로 스위치 포인트와 상금의 비율은 1:1.25가 됩니다. 두 번째 선택지가 이길 경우, 단 한 명의 시청자가 50 스위치 포인트를 가져가므로 스위치 포인트와 상금의 비율은 1:5가 됩니다.
상금에서 첫 번째 선택지에 걸린 금액이 차지하는 비율이 퍼센트로 주어질 때, 스위치 TV 팀이 두 가지 선택지에 대해 스위치 포인트와 상금의 비율을 계산할 수 있도록 도와줍시다.
상금에서 첫 번째 선택지에 걸린 금액이 차지하는 비율을 퍼센트로 나타낸 하나의 정수 a (0 < a < 100)가 주어집니다.
각 선택지에 대해 (첫 번째 선택지, 두 번째 선택지 순서로), 1:x가 그 선택지의 스위치 포인트와 상금의 비율을 나타내는 숫자 x를 출력합니다. 당신의 답은 최대 10 ^ (-3)의 절대 또는 상대 오차를 지닐 수 있습니다.
>>>코드
a = float(input())
print(1+(100-a)/a)
print(1+a/(100-a))
3. 백준 17863 FYI
In the United States of America, telephone numbers within an area code consist of 7 digits: the prefix number is the first 3 digits and the line number is the last 4 digits. Traditionally, the 555 prefix number has been used to provide directory information and assistance as in the following examples:
- 555-1212
- 555-9876
- 555-5000
- 555-7777
Telephone company switching hardware would detect the 555 prefix and route the call to a directory information operator. Now-a-days, telephone switching is done digitally and somewhere along the line a computer decides where to route calls.
For this problem, write a program that determines if a supplied 7-digit telephone number should be routed to the directory information operator, that is, the prefix number is 555.
The input consists of a single line containing a 7-digit positive integer N,
(1000000 <= N <= 9999999).
The single output line consists of the word YES if the number should be routed to the directory information operator or NO if the number should not be routed to the directory information operator.
>>>해석
미국에서 지역 내 전화번호는 7자리로 이루어져 있습니다:
첫 세 자리를 앞자리 번호라 부르고, 끝 네 자리를 뒷자리 번호라 부릅니다.
아래의 예시와 같이, 전통적으로 앞자리 번호가 555인 번호는 전화번호 제공 및 안내에 사용됩니다.
- 555-1212
- 555-9876
- 555-5000
- 555-7777
전화 교환기는 앞자리 번호가 555인 번호를 탐지해 담당 상담원에게 전화를 연결합니다.
현대 사회에서 전화 교환은 디지털로 이루어지므로 특정 단계에서 컴퓨터가 전화를 어디로 돌릴지 결정합니다.
이 문제에서 당신은 제공된 일곱 자리 전화번호가 앞자리 번호가 555이므로 담당 상담원에게 연결해야 하는 번호인지 판정하는 프로그램을 작성합니다.
한 줄에 일곱 자리 자연수 N (1000000 <= N <= 9999999)이 주어집니다.
한 줄에 전화번호가 담당 상담원에게 연결돼야 한다면 YES를, 그러지 않아도 된다면 NO를 출력합니다.
>>>코드
n = input()
if n[:3] == '555':
print('YES')
else:
print('NO')
4. 백준 6841 I Speak TXTMSG
Text messaging using a cell phone is popular among teenagers. The messages can appear peculiar because short forms and symbols are used to abbreviate messages and hence reduce typing.
For example, “LOL” means “laughing out loud” and “:-)” is called an emoticon which looks like a happy face (on its side) and it indicates chuckling. This is all quite a mystery to some adults.
Write a program that will continually input a short form and output the translation for an adult using the following translation table:
Short Form Translation
CU see you
:-) I’m happy
:-( I’m unhappy
;-) wink
:-P stick out my tongue
(~.~) sleepy
TA totally awesome
CCC Canadian Computing Competition
CUZ because
TY thank-you
YW you’re welcome
TTYL talk to you later
The user will be prompted to enter text to be translated one line at a time. When the short form “TTYL” is entered, the program ends. Users may enter text that is found in the translation table, or they may enter other words. All entered text will be symbols or upper case letters. There will be no spaces and no quotation marks.
The program will output text immediately after each line of input. If the input is one of the phrases in the translation table, the output will be the translation; if the input does not appear in the table, the output will be the original word. The translation of the last short form entered “TTYL” should be output.
>>>해석
휴대전화를 이용한 문자 메시지는 십대들 사이에서 인기가 있습니다.
짧은 형식과 기호를 사용하여 메시지를 축약하여 입력을 줄이기 때문에 메시지가 이상하게 보일 수 있습니다.
예를 들어 "LOL"은 "큰 소리로 웃다"라는 뜻이고 ":-)"는 (옆에서) 행복한 얼굴처럼 보이는 이모티콘이라고 하며 웃는 것을 나타냅니다. 이것은 일부 어른들에게는 모두 매우 미스터리입니다.
다음 번역표를 사용하여 연속적으로 짧은 형식을 입력하고 번역을 출력하는 프로그램을 작성하십시오.
줄임말 의미
CU see you
:-) I’m happy
:-( I’m unhappy
;-) wink
:-P stick out my tongue
(~.~) sleepy
TA totally awesome
CCC Canadian Computing Competition
CUZ because
TY thank-you
YW you’re welcome
TTYL talk to you later
한 번에 한 줄씩 번역할 텍스트를 입력하라는 메시지가 사용자에게 표시됩니다.
약식 "TTYL"을 입력하면 프로그램이 종료됩니다.
사용자는 번역표에서 찾은 텍스트를 입력하거나 다른 단어를 입력할 수 있습니다.
입력한 모든 텍스트는 기호 또는 대문자입니다. 공백과 따옴표가 없습니다.
프로그램은 각 입력 줄 직후에 텍스트를 출력합니다.
입력이 번역 테이블의 구 중 하나인 경우 출력은 번역이 됩니다.
입력이 테이블에 나타나지 않으면 출력은 원래 단어가 됩니다.
"TTYL"을 입력한 마지막 짧은 형식의 번역이 출력되어야 합니다.
>>>코드
l = {'CU':'see you',':-)':'I’m happy',':-(':'I’m unhappy',';-)':'wink',':-P':'stick out my tongue','(~.~)':'sleepy','TA':'totally awesome','CCC':'Canadian Computing Competition','CUZ':'because','TY':'thank-you','YW':'you’re welcome','TTYL':'talk to you later'}
while True:
s = input()
if s == 'TTYL':
print(l[s])
break
elif s in l:
print(l[s])
else:
print(s)
5. 백준 5928 Contest Timing
Bessie the cow is getting bored of the milk production industry, and wants to switch to an exciting new career in computing. To improve her coding skills, she decides to compete in the on-line USACO competitions. Since she notes that the contest starts on November 11, 2011 (11/11/11), she decides for fun to download the problems and begin coding at exactly 11:11 AM on 11/11/11.
Unfortunately, Bessie's time management ability is quite poor, so she wants to write a quick program to help her make sure she does not take longer than the 3 hour (180 minute) time limit for the contest. Given the date and time she stops working, please help Bessie compute the total number of minutes she will have spent on the contest.
Input
Line 1: This line contains 3 space-separated integers, D H M, specifying the date and time at which Bessie ends the contest. D will be an integer in the range 11..14 telling the day of the month; H and M are hours and minutes on a 24-hour clock (so they range from H=0,M=0 at midnight up through H=23,M=59 at 11:59 PM).
Output
Line 1: The total number of minutes spent by Bessie in the contest, or -1 if her ending time is earlier than her starting time.
>>>해석
소 베시는 우유 생산 산업에 종사하는 것도 지쳐, 컴퓨터 관련 흥미로운 커리어를 새로 시작하려 합니다.
코딩 실력을 늘리기 위해, 베시는 온라인 USACO 대회에 참가하기로 했습니다.
대회가 2011년 11월 11일(11/11/11)에 시작한다는 것을 알게 돼,
베시는 재미 삼아 11/11/11 오전 11:11에 문제를 다운로드 받아 코딩을 시작하기로 했습니다.
안타깝게도 베시는 시간 관리를 잘하는 편이 아니라, 대회 시간 제한인 3시간(180분)을 넘기지 않도록 도와주는 프로그램을 빠르게 작성하려 합니다. 날짜와 베시가 대회를 마친 시간이 주어질 때, 베시를 도와 그녀가 대회에 투자한 시간을 분으로 계산합시다.
입력
첫째 줄: 베시가 대회를 마치는 시간을 나타낸 세 정수 D H M이 공백으로 나뉘어 주어집니다. D는 날짜의 일을 나타내는 11~14 사이의 정수이며, H와 M은 24시간 단위 기준으로 날짜의 시간과 분을 나타냅니다. (따라서 범위는 자정인 H = 0, M = 0부터 오후 11시 59분을 나타내는 H = 23, M = 59까지입니다.)
출력
첫째 줄: 베시가 대회에 투자한 총 시간을 분으로 출력하거나, 끝나는 시간이 시작 시간보다 빠르다면 -1을 출력합니다.
>>>코드
d, h, m = map(int, input().split())
t = d*24*60+h*60+m-(11*24*60+11*60+11)
if t<0:
print(-1)
else:
print(t)
6. 백준 26742 Skarpetki
W Bajtocji noszenie skarpetek o różnych kolorach i wzorach przestało już być modne. Teraz nastała moda na noszenie wyłącznie dwóch skarpetek białych lub dwóch skarpetek czarnych.
Bajtazar, który zawsze stara się nadążać za trendami w modzie, zakupił dużo pojedynczych skarpetek (białych i czarnych). Chciałby wiedzieć ile jednokolorowych (albo białych albo czarnych) par skarpetek uda mu się skompletować.
Ponieważ Bajtazar nie radzi sobie za dobrze ze zliczaniem swoich skarpetek, zwrócił się do Ciebie z prośbą o pomoc. Napisz program, który wczyta ciąg opisujący skarpetki Bajtazara i wyznaczy liczbę jednokolorowych par skarpetek, które można z nich skompletować.
W pierwszym (jedynym) wierszu wejścia znajduje się niepusty ciąg liter B oraz C oznaczających kolory kolejnych skarpetek Bajtazara (B oznacza skarpetkę białą, a C skarpetkę czarną).
Długość ciągu nie przekracza 1 000 000 znaków.
W pierwszym (jedynym) wierszu wyjścia należy wypisać jedną nieujemną liczbę całkowitą – liczbę par skarpetek jednokolorowych, jakie można stworzyć ze skarpetek opisanych na wejściu.
>>>해석
Byteotia에서 다른 색상과 패턴의 양말을 신는 것은 더 이상 유행이 아닙니다.
지금은 흰 양말 두 개나 검은 양말 두 개만 신는 것이 유행입니다.
항상 패션 트렌드를 따라가려고 노력하는 Byteasar는 단일 양말 (흰색과 검정색)을 많이 구입했습니다.
그는 자신이 완성할 수 있는 단일 색상(흰색 또는 검정색) 양말을 몇 켤레나 알고 싶어합니다.
Byteasar는 양말을 세는 데 능숙하지 않기 때문에 도움을 요청했습니다. Byteasar의 양말을 설명하는 문자열을 읽고 그로부터 조립할 수 있는 단색 양말 쌍의 수를 결정하는 프로그램을 작성하십시오.
입력의 첫 번째이자 유일한 줄에는 Byteasar의 양말 색상을 나타내는 비어 있지 않은, B와 C로만 구성된 문자열이 입력됩니다.B는 흰색 양말을 나타내고 C는 검은색 양말을 나타냅니다.
문자열의 길이는 1,000,000자를 초과하지 않습니다.
입력에서 설명된 양말들에서 만들 수 있는 단색 양말 쌍의 수를 한 줄에 출력합니다.
>>>코드
s = input()
print(s.count('B')//2 + s.count('C')//2)
7. 백준 24294 ГРАДИНА
Цветин живее на поле, разделено на квадратни клетки с размер 1x1. Той много обича цветята, затова често прави нови лехи за тях. Цветните лехи имат специална форма: те са два правоъгълника, поставени един до друг, така че левите им страни образуват една права линия (фигурата вдясно).
За да украси новата леха, Цветин решил да постави по целия ѝ периметър плочки, със същия размер като клетката на полето, в което живее
Напишете програма garden, която намира броя плочки, които са необходими на Цветин.
На първите четири реда на стандартния вход са записани четири цели числа w1, h1, w2 и h2 - съответно ширина и височина на първия правоъгълник, ширина и височина на втория правоъгълник, от които е направена лехата.
На първия ред на стандартния изход програмата трябва да изведе едно цяло число - брой на плочките, необходими на Цветин да украси леха с дадения размер.
>>>해석
즈베틴은 1 * 1 크기의 사각형 칸으로 나뉘어진 정원에 있습니다.
즈베틴은 꽃을 좋아해, 종종 화단을 만듭니다. 화단은 항상 특별한 모양을 지닙니다: (그림 참조)
두 직사각형이 왼쪽이 직선을 이루도록 붙어 배치된 모양입니다.
새로운 화단을 꾸미기 위해, 즈베틴은 둘레에 그가 있는 정원의 한 칸과 같은 크기의 타일을 깔려고 합니다.
즈베틴이 깔아야 하는 타일의 수를 구하는 프로그램을 작성합시다.
첫 네 개의 줄에 화단을 이루는 첫 번째 직사각형의 너비와 높이, 두 번째 직사각형의 너비와 높이를 각각 나타내는 w1, h1, w2, h2가 표준 입력으로 주어집니다.
첫 줄에 즈베틴이 주어진 사이즈의 화단을 꾸미는 데 필요한 타일의 수를 정수로 출력합니다.
>>>코드
w1 = int(input())
h1 = int(input())
w2 = int(input())
h2 = int(input())
print(2*(h1+h2+max(w1, w2)) + 4)
8. 백준 24356 ЧАСОВНИК
Група ученици излезли на разходка след училище. При тръгване електронният часовник на Тони показвал t1 часа и m1 минути. Те обикаляли около езеро. Когато се прибрали, Тони погледнал часовника и видял, че е t2 часа и m2 минути. Разходката продължила по-малко от едно денонощие и наймалко може да е била 0 минути. Пълна обиколка на езерото се прави точно за половин час.
и точно за половин час. Напишете програма chas, която въвежда началния и крайния час на разходката, и отпечатва времето m в минути, което е изминало и броя n на пълните обиколки, които са направили учениците за това време.
От стандартния вход се въвеждат последователно четири цели числа t1, m1, t2, m2.
На стандартния изход програмата трябва да изведе две цели числа m и n - търсеното време в минути и броя на пълните обиколки. Числата са разделени с един интервал.
>>>해석
학생들이 방과 후에 산책을 나섰습니다. 토니의 디지털 시계는 t1시 m1분을 가리키고 있습니다.
학생들은 호수 주변을 걸었습니다. 집에 도착해, 토니가 다시 시계를 보니 t2시 m2분이었습니다.
산책 시간은 하루보다 짧으며 0분이었을 수도 있습니다. 호수를 한 바퀴 도는 데에는 30분이 걸립니다.
산책을 시작한 시간과 산책이 끝난 시간을 입력 받아 산책에 걸린 시간 m분과 학생들이 호수를 완전히 한 바퀴 돈 횟수 n번을 출력하는 프로그램을 작성합시다.
표준 입력으로 네 정수 t1, m1, t2, m2가 순서에 맞게 주어집니다.
프로그램은 각각 분으로 표기한 총 산책 시간과 호수를 완전히 한 바퀴 돈 횟수인 두 정수 m과 n을 출력합니다. 숫자는 공백으로 구분됩니다.
>>>코드
t1, m1, t2, m2 = map(int, input().split())
t = t2*60+m2-t1*60-m1
if t<0:
t = 1440 + t
print(t, t//30)
9. 백준 21354 Äpplen och päron
Axel vill tävla med Petra om vem som sålt flest äpplen respektive päron, men Petra tycker inte att man kan "jämföra äpplen och päron". De kommer överens om att de istället ska jämföra hur mycket de tjänat. De ber dig skapa ett program som skriver ut vem som tjänat mest. Äpplen kostar 7 kronor styck och päron 13 kronor styck.
En rad med två heltal A,P (0 <= A,P <= 1000), antalet äpplen Axel har lyckats sälja, och antalet päron Petra har lyckats sälja.
Programmet ska skriva ut en rad med en sträng: den person som har tjänat mest, "Axel" eller "Petra". Om de sålt för lika mycket ska du skriva "lika".
>>>해석
악셀은 페트라와 누가 사과 또는 배를 더 많이 팔았는지 대결하고 싶어하지만, 페트라는 "사과와 배는 비교할 수 없다"고 생각합니다. 그들은 대신 누가 더 돈을 많이 벌었는지 대결하기로 했습니다.
그들은 당신에게 누가 더 많이 벌었는지 출력하는 프로그램을 작성해 달라고 부탁합니다.
사과의 가격은 7 스웨덴 크로나이며, 배의 가격은 13 스웨덴 크로나입니다.
한 줄에 악셀이 판 사과의 수와 페트라가 판 배의 수를 나타내는 두 정수 A, P (0 <= A, P <= 1000)가 주어집니다. 프로그램은 한 줄에 문자열을 출력합니다: "Axel"과 "Petra" 중 돈을 더 많이 번 사람의 이름.
둘이 같은 금액을 팔았다면, "lika"를 출력합니다.
>>>코드
apple, pear = map(int, input().split())
if apple*7>pear*13:
print('Axel')
elif apple*7<pear*13:
print('Petra')
else:
print('lika')
10. 백준 18414 X に最も近い値 (The Nearest Value)
整数 X, L, R が与えられる. L 以上 R 以下の整数のうち,X との差の絶対値が最も小さいものを出力せよ.
そのような整数はちょうど 1 つだけ存在することが証明できる.
入力は以下の形式で標準入力から与えられる.
X L R
L 以上 R 以下の整数のうち,X との差の絶対値が最も小さいものを出力せよ.
>>>해석
정수 X, L, R이 주어집니다. L 이상 R 이하의 정수 중, X와의 차의 절댓값이 가장 작은 것을 출력합시다.
그런 정수가 단 하나 존재함은 증명 가능합니다.
아래의 형식으로 표준 입력이 주어집니다.
X L R
L 이상 R 이하의 정수 중, X와의 차의 절댓값이 가장 작은 것을 출력합시다.
>>>코드
x, l, r = map(int, input().split())
if x <= l:
print(l)
elif x >= r:
print(r)
else:
print(x)
11. 백준 20839 Betygsättning
Pelle är programmeringslärare på Pelles Optimeringsskola (PO-skolan).
Han håller nu på att sätta betyg på sina elever i kursen Optimering 1.
Betygsättning går till på följande vis. Totalt finns det x A-kriterier, y C-kriterier och z E-kriterier som används. För att få betyget E måste man uppfylla samtliga E-kriterier. För att få betyget C måste man uppfylla samtliga C- och E-kriterier. För att få betyget A måste man uppfylla samtliga A-, C- och E-kriterier.
Dessutom finns det två speciella betyg. Om man uppfyller alla E-kriterier och minst hälften av C-kriterierna får man ett D. Om man uppfyller alla E- och C-kriterier och minst hälften av A-kriterierna får man ett B.
Pelle tycker det är väldigt jobbigt att sätta betyg, och behöver din hjälp. Skriv ett program som tar emot antalet A-, C- och E-kriterier en viss elev har uppfyllt och skriver ut vilket betyg eleven ska ha. Du kan anta att eleven alltid fick minst E i kursen.
På första raden står tre heltal 1 <= x <= 30, 1 <= y <= 30 och 1 <= z <= 30, antalet A-, C- och E-kriterier som finns. På den andra raden står tre heltal 0 <= x' <= x, 0 <= y' <= y och 0 <= z' <= z, antalet A-, C- och E-kriterier som eleven har uppfyllt.
Programmet ska skriva ut en bokstav: A, B, C, D, eller E.
>>>코드
펠레는 '펠레의 최적화 학교 (PO 스쿨)'의 프로그래밍 교사입니다.
그는 현재 최적화 1 수업의 학생의 성적을 매기는 중입니다.
성적은 다음과 같은 방식으로 매겨집니다. x개의 기준 A, y개의 기준 C, z개의 기준 E가 있습니다.
E 등급을 받으려면, 모든 기준 E를 만족해야 합니다.
C 등급을 받으려면, 모든 기준 C와 기준 E를 만족해야 합니다.
A 등급을 받으려면, 모든 기준 A, 기준 C, 기준 E를 만족해야 합니다.
추가로 특별 등급이 2개 있습니다.
모든 기준 E를 만족하고 절반 이상의 기준 C를 만족하면 D 등급이 부여됩니다.
만약 모든 기준 E와 기준 C를 만족하고 절반 이상의 기준 A를 만족한다면 B 등급이 부여됩니다.
펠레는 점수를 매기는 게 굉장히 어렵다는 것을 깨닫고, 당신에게 도움을 요청합니다. 특정 학생이 충족한 기준 A, 기준 C, 기준 E의 수를 입력 받아 그 학생이 어떤 등급을 받는지 출력하는 프로그램을 작성합시다.
특정 학생이 최소 E 등급은 받음은 보장됩니다.
첫 줄에 기준 A, 기준 C, 기준 E의 수를 각각 의미하는 1 <= x <= 30, 1 <= y <= 30, 1 <= z <= 30이 주어집니다. 둘째 줄에는 학생이 만족한 기준 A, 기준 C, 기준 E의 수를 각각 의미하는 0 <= x' <= x, 0 <= y' <= y, 0 <= z' <= z가 주어집니다.
프로그램은 문자 A, B, C, D, 또는 E를 출력합니다.
>>>코드
a, c, e = map(float, input().split())
aa, cc, ee = map(int, input().split())
if aa == a and cc == c and ee == e:
print('A')
elif aa >= a/2 and cc == c and ee == e:
print('B')
elif cc == c and ee == e:
print('C')
elif cc >= c/2 and ee == e:
print('D')
else:
print('E')
12. 백준 21665 Миша и негатив
Миша уже научился хорошо фотографировать и недавно увлекся программированием. Первая программа, которую он написал, позволяет формировать негатив бинарного черно-белого изображения.
Бинарное черно-белое изображение – это прямоугольник, состоящий из пикселей, каждый из которых может быть либо черным, либо белым. Негатив такого изображения получается путем замены каждого черного пикселя на белый, а каждого белого пикселя – на черный.
Миша, как начинающий программист, написал свою программу с ошибкой, поэтому в результате ее исполнения мог получаться некорректный негатив. Для того чтобы оценить уровень несоответствия получаемого негатива изображению, Миша начал тестировать свою программу.
В качестве входных данных он использовал исходные изображения. Сформированные программой негативы он начал тщательно анализировать, каждый раз определяя число пикселей негатива, которые получены с ошибкой.
Требуется написать программу, которая в качестве входных данных использует исходное бинарное черно-белое изображение и полученный Мишиной программой негатив, и на основе этого определяет количество пикселей, в которых допущена ошибка.
Первая строка входного файла содержит целые числа n и m (1 ≤ n, m ≤ 100) – высоту и ширину исходного изображения (в пикселях).
Следующие n строк содержат описание исходного изображения. Каждая строка состоит из m символов «B» и «W». Символ «B» соответствует черному пикселю, а символ «W» – белому.
Далее следует пустая строка, а после нее – описание изображения, выведенного Мишиной программой в том же формате, что и исходное изображение.
В выходной файл необходимо вывести число пикселей негатива, которые неправильно сформированы Мишиной программой.
>>>해석
사진을 잘 찍는 미샤는 최근에 프로그래밍에 흥미가 생겼습니다.
미샤는 첫 프로그램으로 이진 흑백 이미지를 반전시키는 프로그램을 작성했습니다.
이진 흑백 이미지는 검은색 또는 흰색인 픽셀로 이루어진 직사각형 형태입니다.
이 이미지의 반전 이미지는 모든 검은색 픽셀을 흰색으로, 모든 흰색 픽셀을 검은색으로 바꾼 이미지입니다.
초보 프로그래머인 미샤의 프로그램에는 오류가 있어 제대로 반전되지 못한 이미지를 반환합니다. 프로그램이 반환한 이미지와 정확한 반전 이미지의 차이를 평가하기 위해 미샤는 프로그램을 테스트하기 시작합니다.
프로그램은 원래 이미지를 입력으로 사용합니다.
테스트마다 미샤는 잘못 변환된 반전 픽셀의 수를 세며 프로그램이 생성한 반전 이미지를 면밀히 검토합니다.
본래 이진 이미지와 미샤의 프로그램이 생성한 반전 이미지를 입력으로 받아, 오류가 있는 픽셀의 수를 계산하는 프로그램을 작성합시다.
첫 줄에 (픽셀로 나타낸) 원래 이미지의 높이와 너비를 나타내는 정수 n과 m이 주어집니다.
(1 <= n, m <= 100)
다음 n개의 줄에 원래 이미지가 묘사됩니다. 각 줄은 "B" 또는 "W"인 m개의 문자로 이루어져 있습니다. "B"는 검은 픽셀을, "W"는 흰 픽셀을 나타냅니다.
공백 한 줄이 주어지고, 원래 이미지와 같은 형식으로 미샤의 프로그램이 출력한 이미지가 묘사됩니다.
미샤의 프로그램이 부정확하게 반전시킨 픽셀의 수를 출력합니다.
>>>코드
n, m = map(int, input().split())
l, r = [], []
p = 0
for i in range(n):
l.append(input())
input()
for i in range(n):
r.append(input())
for i in range(n):
for j in range(m):
if l[i][j] == r[i][j]:
p += 1
print(p)'백준 > 백준 파이썬' 카테고리의 다른 글
| 백준 파이썬 Today I Learn 2023.07.04 (0) | 2023.07.04 |
|---|---|
| 백준 파이썬 Today I Learn 2023.07.03 (1) | 2023.07.04 |
| 백준 파이썬 Today I Learn 2023.07.01 (0) | 2023.07.01 |
| 백준 파이썬 Today I Learn 2023.06.30 (0) | 2023.07.01 |
| 백준 파이썬 Today I Learn 2023.06.29 (0) | 2023.07.01 |