728x90
반응형

10/ 13 파이썬 공부
1. 백준 28417 스케이트보드
2020년부터 올림픽 정식 종목으로 포함된 스케이트보드는 스트리트와 파크 종목으로 나뉜다. 
그 중 스트리트는 계단, 난간, 레일, 경사면 등 다양한 구조물을 활용해 기술을 구사하는 종목이다. 
스트리트 종목의 채점 방식은 다음과 같다.

- 각 선수는 두 차례의 런, 다섯 차례의 트릭 연기를 수행해 각각 0부터 100 사이의 점수를 받는다.
- 두 차례의 런에서 받은 최고 점수와 다섯 차례의 트릭 연기를 통해 받은 점수 중 상위 2개의 점수, 총 3개의 점수를 더한 값이 최종 점수가 된다.
- 최종 점수가 가장 높은 사람을 우승자로 정한다. 단, 최고 득점자가 여러 명이면 공동 우승으로 한다.

출전한 선수들의 점수표가 주어졌을 때, 우승자의 최종 점수를 구해 보자.

첫째 줄에 사람의 수 N이 주어진다. (1 <= N <= 100,000) 
둘째 줄부터 N개의 줄에 걸쳐 2개의 런, 5개의 트릭 점수를 나타내는 정수 7개가 공백으로 구분되어 순서대로 주어진다. (0 <= 점수 <= 100)
첫째 줄에 우승자의 최종 점수를 출력한다.

>>>코드

import sys
score = []
for i in range(int(input())):
    l = list(map(int, sys.stdin.readline().split()))
    trick = sorted(l[2:])
    score.append(max(l[:2]) + sum(trick[3:]))
print(max(score))



>>>코드 설명
코드 속도가 굉장히 느려서
입력을
import sys
sys.stdin.readline을 사용했다.

1) 한줄로 입력받기
2) 달리기와 트릭 부분을 슬라이싱 해서 오름 차순으로 정렬하여 새로운 리스트에 저장하기
3) 점수 계산해서 score 리스트에 저장하기
4) 최대 점수 출력

728x90
반응형
728x90
반응형

10/ 12 파이썬 공부
1. 백준 29720 그래서 님 푼 문제 수가?
브실이는 하루라도 빨리 대회 출제 자격을 얻기 위해서 1,000문제 해결을 목표로 매일 문제를 풀고 있다. 
그러다 보니 다른 사람들의 푼 문제 수에 관심이 많다. 
사람들은 “저는 총 1,000문제 이상 해결하려면 하루에 5문제씩 최소 128일은 더 풀어야 해요”
와 같이 자신이 몇 문제를 풀었는지 설명한다. 
브실이는 이 말을 들을 때마다 상대방이 현재까지 몇 문제를 풀었는지 궁금해서 참을 수 없었다.
브실이를 도와 상대방이 푼 문제 수의 최솟값과 최댓값을 구해보자.

첫 번째 줄에 양의 정수 N, M, K가 공백으로 구분되어 주어진다. (1 <= N, M, K <= 2,000) 

이는 “저는 총 N문제 이상 해결하려면 하루에 M문제씩 최소 K일은 더 풀어야 해요”라는 의미이다.
K일이 지나기 전에 N문제를 해결할 수 있는 입력은 주어지지 않는다.
위 문장으로 알 수 있는 상대방이 현재까지 푼 문제 수의 최솟값과 최댓값을 공백으로 구분하여 한 줄에 순서대로 출력한다.

>>>코드

n, m, k = map(int, input().split())
if n >= m*k:
    print(n-m*k, n-m*(k-1)-1)
else:
    print(0, n-m*(k-1)-1)



>>>코드 해설
고려해야될 경우
1) M*K가 N보다 작거나 같은 경우
최소값이 N-M*K

2) M*K가 N보다 클 경우
N-M*K가 0보다 작아지기 때문에 최소값(문제의 수는 0보다 작아질 수 있음)은 0으로 고정이다.

728x90
반응형
728x90
반응형

10/ 11 파이썬 공부
1. 백준 1110 더하기 사이클
0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 
먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 
그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자.

26부터 시작한다. 
2+6 = 8이다. 새로운 수는 68이다. 
6+8 = 14이다. 새로운 수는 84이다. 
8+4 = 12이다. 새로운 수는 42이다. 
4+2 = 6이다. 새로운 수는 26이다.

위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다.
N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오.

첫째 줄에 N이 주어진다. N은 0보다 크거나 같고, 99보다 작거나 같은 정수이다.
첫째 줄에 N의 사이클 길이를 출력한다.

>>>코드

n = str(input())
r = n
i = 0
while True:
# 수가 10보다 작거나 앞에 0이 붙어있는경우
    if int(n) < 10 or n[0] == '0':
        n = n[-1] + n[-1]
# 일반적인 경우
    else:
        m = str(int(n[0]) + int(n[1]))
        n = n[1] + m[-1]
# 사이클 카운트
    i += 1
# 조건 만족시 사이클 길이 출력 및 break
    if int(n) == int(r):
        print(i)
        break



>>>코드 설명
문자열로 슬라이싱 해서 더하는 방식을 사용할 것이다.

고려해야할 경우
1) 10 이하일 경우
1 ~ 9 의 경우 다음 수는 11,22,33,44 .... 즉, 이전수를 연속해서 붙인 수가 나온다.

2) 10의 배수일 경우
그냥 문자열로 더했을 경우 10의 배수들은 다음 수들이
01, 02, 03 이렇게 앞에 0이 붙어 나오게 된다.

3) 일반적인 경우
그냥 슬라이싱 해서 정수로 바꿔서 더한 후 마지막 숫자랑 더한 수를 문자열로 더해준다.

728x90
반응형
728x90
반응형

10/ 10 파이썬 공부
1. 백준 1436 영화감독 숌
666은 종말을 나타내는 수라고 한다. 
따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 
영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워즈를 만들 때, 스타워즈 1, 스타워즈 2, 스타워즈 3, 스타워즈 4, 스타워즈 5, 스타워즈 6과 같이 이름을 지었고, 피터 잭슨은 반지의 제왕을 만들 때, 반지의 제왕 1, 반지의 제왕 2, 반지의 제왕 3과 같이 영화 제목을 지었다. 하지만 숌은 자신이 조지 루카스와 피터 잭슨을 뛰어넘는다는 것을 보여주기 위해서 영화 제목을 좀 다르게 만들기로 했다.

종말의 수란 어떤 수에 6이 적어도 3개 이상 연속으로 들어가는 수를 말한다. 
제일 작은 종말의 수는 666이고, 그 다음으로 큰 수는 1666, 2666, 3666, .... 이다. 따라서, 숌은 첫 번째 영화의 제목은 "세상의 종말 666", 두 번째 영화의 제목은 "세상의 종말 1666"와 같이 이름을 지을 것이다. 일반화해서 생각하면, N번째 영화의 제목은 세상의 종말 (N번째로 작은 종말의 수) 와 같다.

숌이 만든 N번째 영화의 제목에 들어간 수를 출력하는 프로그램을 작성하시오. 
숌은 이 시리즈를 항상 차례대로 만들고, 다른 영화는 만들지 않는다.

첫째 줄에 N이 주어진다. N은 10,000보다 작거나 같은 자연수이다.
첫째 줄에 N번째 영화의 제목에 들어간 수를 출력한다.

>>>코드

n = int(input())
m, r = 0, 666
while True:
    if '666' in str(r):
        m += 1
    if m == n:
        print(r)
        break
    r += 1



느리긴 한데 그냥 더했다....

728x90
반응형
728x90
반응형

10/ 09 파이썬 공부
1. 백준 1676 팩토리얼 0의 개수
N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.

첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)
첫째 줄에 구한 0의 개수를 출력한다.

>>>코드

n, r = 1, 0
# 팩토리얼 값 구하기
for i in range(int(input())):
    n = n * (i+1)
# n 값을 문자열로 바꾸기
n = str(n)
# n을 뒤에서 부터 검사해서 '0' 이 나오면 break
for i in range(len(n)):
    if n[len(n)-i-1] == '0':
        r += 1
    else:
        print(r)
        break
728x90
반응형
728x90
반응형

7/ 05 파이썬 공부
1. 백준 26057 Большой удой
В финал соревнования по удою <<Большой удой>> прошли Архип и Бронислав. В течение раунда каждый надоил ведро молока (возможно, неполное), после чего результаты были записаны на листочек, а вёдра с молоком были одновременно опрокинуты в большой чан. Отметка в чане показала, что суммарно было надоено 
$L$ литров молока. Но только участники отвлеклись на вручение призов, как листочек с результатами съела коза.

Баба Надя, недавно приобрёвшая слуховой аппарат, заявила что может восстановить результаты на слух. По вековому опыту она знает, что молоко из ведра льется со скоростью 1 литр в секунду. А на слух она определила, что во время финала молоко лилось в течение 
$T$ секунд. Помогите ответить на вопрос --- на сколько литров победитель обогнал проигравшего?

В первой строке дано целое число L -- количество литров молока, надоенного финалистами 
(1 <= L <= 10^9).
Во второй строке дано целое число T -- время, в течение которого лилось молоко 
(1 <= T <= 10^9, T <= L < 2 * T).
Выведите единственное целое число -- разницу между количеством молока в литрах, надоенного финалистами.

>>>해석
아킵과 브로니슬라프는 우유 생산량 대회 <<Big milk yield>>의 결승에 진출했습니다. 
라운드 동안 각자 우유를 짜서 결과를 종이에 기록한 뒤, 동시에 큰 통에 우유를 부었습니다. 
통의 표시는 총 L리터의 우유가 생산되었음을 나타냅니다. 
하지만 참가자들이 상을 수여하는 것에 정신이 팔리자, 염소 한 마리가 결과가 적힌 전단지를 먹었습니다.

최근 보청기를 구입한 바바 나디아는 귀로 결과를 복원할 수 있다고 말했습니다. 
그녀는 오랜 경험을 통해 우유가 초당 1리터의 속도로 양동이에서 흘러나오는 것을 알고 있습니다. 
그리고 그녀는 결승에서 큰 통에 우유를 부을 때 T초 동안 우유가 흘렀다고 판단했습니다. 
질문에 답하는 것을 도와주세요. 승자가 패자보다 우유를 몇 리터 더 짰나요?

첫째 줄에 결승 진출자들이 생산한 우유의 리터 수 L(1 <= L <= 10^9)이 정수로 주어진다.
둘째 줄에 우유가 흐른 시간 T(1 <= T <= 10^9, T <= L < 2 * T)가 정수로 주어진다.
결승 진출자들이 생산한 우유 양(리터)의 차를 출력합니다.

>>>코드

l = int(input())
t = int(input())
print(t - (l-t))



2. 백준 26731 Zagubiona litera
Bajtosia pracuje w przedszkolu jako nauczycielka angielskiego. 
Dzisiaj na lekcji dzieci mają poznać litery alfabetu angielskiego. Bajtosia przygotowała na tę lekcję 26 specjalnych tabliczek, z których każda zawierała jedną literę alfabetu.

Niestety w ostatniej chwili Bajtosia zauważyła, że ma jedynie 25 tabliczek. 
Jedna z nich musiała gdzieś się zapodziać! Czy możesz określić, której tabliczki brakuje?

Pierwszy i jedyny wiersz wejścia zawiera 25 wielkich liter alfabetu angielskiego. Są to litery, które znajdują się na tabliczkach posiadanych przez Bajtosię. Wszystkie litery są różne.
W pojedynczym wierszu należy wypisać literę, która została zgubiona.

>>>해석
Bytesia는 유치원에서 영어 교사로 일하고 있습니다.
오늘 수업에서 아이들은 영어 알파벳의 글자를 배울 것입니다. 
Bytesia는 이 수업을 위해 각각 알파벳 문자가 하나씩 포함된 26개의 특수 태블릿을 준비했습니다.

불행하게도 마지막 순간에 Bytesia는 자신이 가지고 있는 태블릿이 25개뿐이라는 사실을 알아차렸습니다.
그 중 하나는 어디론가 사라진 게 분명해! 어떤 접시가 없어졌는지 확인할 수 있습니까?

첫 번째이자 입력 줄에는 영문 대문자 25개가 포함되어 있습니다. 
Bytesia가 소유한 태블릿에서 찾을 수 있는 문자입니다. 모든 글자가 다릅니다.
빠진 알파벳 문자를 한 줄에 쓰십시오.

>>>코드

s = input()
for i in range(26):
    if chr(65+i) not in s:
        print(chr(65+i))
        break



3. 백준 26767 Hurra!
Mała Bajtynka lubi liczyć, a szczególnie uwielbia liczby 7 i 11. Mimo najlepszych starań nauczycieli, Bajtynka uroczyście celebruje, zarówno w mowie, jak i na piśmie, każdą napotkaną liczbę podzielną przez 7, zamiast jej nazwy wykrzykując (albo pisząc) Hurra!. Liczenie Bajtynki może więc wyglądać tak:

. . . , 5, 6, Hurra!, 8, 9, . . .

albo tak:

. . . , 12, 13, Hurra!, 15, 16, . . .

Podobnie każda liczba podzielna przez 11 zastępowana jest okrzykiem Super! (na przykład: . . . , 31, 32, Super!, 34, . . . ). Jeśli zaś Bajtynka napotka liczbę, która jest podzielna zarówno przez 7, jak i 11, zamiast niej woła Wiwat! – jest to nieco archaiczne, ale historia jest, zaraz po informatyce, ulubionym przedmiotem Bajtynki.

Spraw Bajtynce prezent na urodziny – napisz program, który w jej imieniu doliczy do dużych liczb!

Twój program powinien wczytać z wejścia jedną liczbę całkowitą N. Liczba będzie równa co najmniej 1 i co najwyżej 1 000 000.
Wypisz kolejne liczby od 1 do N tak, jak napisałaby je Bajtynka. Każdą liczbę wypisz w oddzielnym wierszu.

>>>해석
369 게임을 모르시는 분들은 아마 없을 것이다. 
이번에 설명할 Hurra 게임은 369 게임과 아주 비슷한 게임이다. 게임은 아래와 같이 진행된다.

  ● 참가자들은 1 부터 N 까지 수를 차례로 돌아가면서 외친다.
  ● 만약 외쳐야 하는 수가 7 의 배수이면서 11 의 배수는 아니라면, 수 대신 "Hurra!" 를 외쳐야 한다.
  ● 만약 외쳐야 하는 수가 7 의 배수가 아니면서 11 의 배수라면, 수 대신 "Super!" 를 외쳐야 한다.
  ● 만약 외쳐야 하는 수가 7 의 배수이면서 11 의 배수라면, 수 대신 "Wiwat!" 를 외쳐야 한다.

N 이 주어지면, 1 번째 차례부터 N 번째 차례까지 참가자들이 외쳤을 말을 출력해 보자. 

첫 번째 줄에 N 이 주어진다.
총 N 개의 줄을 출력해야 한다. i 번째 줄에는 참가자가 i 번째 차례에 외친 말을 출력해야 한다.

제한
1 <= N <= 1,000,000

>>>코드

n = int(input())
for i in range(1, n+1):
    if i%7 == 0 and i%11 != 0:
        print('Hurra!')
    elif i%7 != 0 and i%11 == 0:
        print('Super!')
    elif i%7 == 0 and i%11 == 0:
        print('Wiwat!')
    else:
        print(i)



4. 백준 27267 Сравнение комнат
Маша и Петя решили выяснить, чья комната больше. Машина и Петина комнаты имеют форму прямоугольников, причем Машина комната имеет размеры a на b метров, а Петина --- c на d метров.
Напишите программу, которая определит, чья комната больше: Машина или Петина.

На ввод подается четыре натуральных числа, разделенных пробелами: 
a, b, c и d (1 <= a, b, c, d <= 1000).

Если Машина комната больше, выведите латинскую букву <<M>>. Если Петина комната больше, выведите латинскую букву <<P>>. Если комнаты ребят имеют одинаковую площадь, выведите латинскую букву <<E>>.

>>>해석
마샤와 페트야가 누구의 방이 더 큰지 알아보려 합니다. 
둘의 방은 직사각형 형태로, 마샤의 방은 a미터 * b미터 크기이고 페트야의 방은 c미터 * d미터 크기입니다.
마샤와 페트야 중 누구의 방이 더 큰지 판별하는 프로그램을 작성합시다.

공백으로 구분된 네 자연수 a, b, c, d가 입력으로 주어집니다. (1 <= a, b, c, d <= 1000)
마샤의 방이 더 크면 라틴 문자 M을 출력합니다. 페트야의 방이 더 크면 라틴 문자 P를 출력합니다. 
둘의 넓이가 같다면 라틴 문자 E를 출력합니다. 

>>>코드

a, b, c, d = map(int, input().split())
if a*b>c*d:
    print('M')
elif a*b<c*d:
    print('P')
else:
    print('E')



5. 백준 25932 Find the Twins
Dr. Orooji’s twins (Mack and Zack) play soccer. We will assume Mack wears jersey number 18 and Zack wears 17. So, Dr. O has to look for these two numbers when trying to find the twins.
Given a list of 10 numbers, determine if the twins are there.

The first input line contains a positive integer, n, indicating the number of data sets to check. The sets are on the following n input lines, one set per line. Each set consists of exactly 10 single-space-separated distinct integers (each integer between 11 and 99 inclusive) giving the jersey numbers for the players.

Print each input set. Then, on the next output line, print one of four messages (mack, zack, both, none), indicating how many of the twins are in the set. Leave a blank line after the output for each test case.

>>>번역
Dr. Orooji의 쌍둥이(Mack and Zack)는 축구를 합니다. 
우리는 Mack가 18번 저지를 입고 Zack이 17번을 입는다고 가정합니다. 
따라서 Dr. O는 쌍둥이를 찾으려고 할 때 이 두 번호를 찾아야 합니다.
10개의 숫자 목록이 주어지면 쌍둥이가 있는지 확인하십시오.

첫 번째 입력 라인에는 확인할 데이터 세트의 수를 나타내는 양의 정수 n이 포함됩니다. 
세트는 다음 n 입력 라인에 있으며 라인당 하나의 세트입니다. 각 세트는 정확히 10개의 단일 공백으로 구분된 개별 정수(11에서 99 사이의 각 정수)로 구성되어 플레이어의 저지 번호를 제공합니다.

각 입력 세트를 인쇄합니다. 그런 다음, 다음 출력 라인에 네 가지 메시지(mack, zack, both, none) 중 하나를 인쇄하여 세트에 몇 개의 쌍둥이가 있는지 표시합니다. 각 테스트 사례에 대한 출력 뒤에 빈 줄을 남겨둡니다.

>>>코드

for _ in range(int(input())):
    l = list(map(int, input().split()))
    print(*l)
    if 18 in l and 17 in l:
        print('both\n')
    elif 18 in l:
        print('mack\n')
    elif 17 in l:
        print('zack\n')
    else:
        print('none\n')



6. 백준 4696 St, Ives
Robert the chapman (a medieval traveling merchant) made regular trips between his home village and St. Ives to peddle his cloth, ribbons, and needles. On one such trip he encountered a curious procession:

As I was traveling to St. Ives
I met a man with seven wives.
Every wife had seven sacks.
Every sack had seven cats.
Every cat had seven kits.
Kits, cats, sacks, wives -
How many were traveling to St. Ives?

The answer to this classic ancient riddle is ’one’. Robert was traveling to St. Ives. The others were all traveling away from St. Ives. However, if we prefer to ask the question of how many were traveling from St. Ives, we can add up:

1 man
7 wives
7*7 sacks
7*7*7 cats
7*7*7*7 kittens
for a total of 2801.

On his next trip to St. Ives, Robert met the same man, this time accompanied by 3 wives, each
with 3 sacks, and so on. Becoming curious about what seemed to be a bizarre village ritual of some kind, Robert kept track of how many traveled with the man each time he encountered him during the subsequent year.

On average, what was the size of the processions that Robert encounter on his trips to St. Ives?

Input consists of multiple data sets. Each data set consists of a line with a single floating point number number representing the numbers of wives, sacks per wife, cats per sack, and kittens per cat that Robert encountered that year.
End of input is indicated by a value of zero.
For each data set, print the size of the average procession as a real number presented to 2 decimal points precision.

>>>해석
로버트 채프먼(중세의 여행하는 상인)은 그의 고향 마을과 St.Ives 사이를 정기적으로 여행하여 천, 리본, 바늘을 장사했습니다. 그러한 여행에서 그는 신기한 행렬을 만났습니다.

내가 St. Ives로 여행할 때
아내가 일곱인 남자를 만났습니다.
모든 아내는 일곱 자루를 가지고 있었습니다.
모든 자루에는 일곱 마리의 고양이가 있었습니다.
모든 고양이는 7개의 키트를 가지고 있었습니다.
키트, 고양이, 자루, 아내 -
얼마나 많은 사람들이 St. Ives로 여행하고 있었습니까?

이 고전적인 고대 수수께끼의 답은 '하나'입니다. 로버트는 St. Ives로 여행 중이었습니다. 
다른 사람들은 모두 St. Ives에서 멀리 여행하고 있었습니다. 그러나 St. Ives에서 얼마나 많은 사람들이 여행했는지에 대한 질문을 선호한다면 다음과 같이 더할 수 있습니다.

1명
7명의 아내
7*7 자루
7*7*7 고양이
7*7*7*7 새끼 고양이
총 2801개.

St. Ives로의 다음 여행에서 로버트는 같은 남자를 만났는데, 이번에는 각각 3명의 아내와 동행했습니다.
3 자루 등. 어떤 종류의 기이한 마을 의식처럼 보이는 것에 호기심을 갖게 된 로버트는 그 다음 해에 그를 만날 때마다 그 남자와 얼마나 많은 사람들이 여행했는지를 추적했습니다.

평균적으로 로버트가 St. Ives로 여행하는 동안 마주치는 행렬의 규모는 어느 정도였습니까?

입력은 여러 데이터 세트로 구성됩니다. 각 데이터 세트는 아내의 수, 아내당 자루 수, 자루당 고양이 수, 그해 로버트가 만난 고양이 수를 나타내는 단일 부동 소수점 숫자가 있는 라인으로 구성됩니다.
입력의 끝은 0 값으로 표시됩니다.
각 데이터 세트에 대해 평균 행렬의 크기를 소수점 이하 2자리 정밀도로 표시되는 실수로 출력하십시오.

>>>코드

while True:
    n = float(input())
    r = 0
    if n == 0:
        break
    for i in range(5):
        r += n**i
    print('%.2f' %(r))
728x90
반응형
728x90
반응형

7/ 04 파이썬 공부
1. 백준 24365 ПЧЕЛИЧКАТА МАЯ
На три цветя, подредени в редица на разстояние през 1 метър, са кацнали пчели. На лявото цвете пчелите не са повече от тези на средното, а на средното не са повече от пчелите, кацнали на дясното цвете.

Ръководител на всички е пчеличката Мая. Тя пресметнала, че ако определи някои от пчелите да се преместят, то на трите цветя ще има по равен брой пчели. За съжаление, работливите пчели трябва да пестят силите си. Затова Мая иска първо да изчисли минималния брой метри, които може да се прелетят и след това вече ще определи коя пчела на кое цвете да се премести.

За да помогнете на пчеличката Мая, напишете програма bee, която извежда този минимален брой метри.

От първия ред на стандартния вход се въвеждат три цели числа А, В и C - брой на пчелите съответно на лявото, средното и дясното цвете. Числата са разделени с по един интервал.
На един ред на стандартния изход програмата трябва да изведе едно цяло число – минималния общ брой прелетени метри от пчелите.

>>>해석
꿀벌이 각각 1m 간격으로 떨어진 꽃 세 송이에 앉아있습니다. 왼쪽 꽃에 앉은 벌의 수는 가운데 꽃에 앉은 벌의 수보다 적고, 가운데 꽃에 앉은 벌의 수는 오른쪽 꽃에 앉은 벌의 수보다 적습니다.

마야는 여왕벌입니다. 그녀는 몇 마리의 벌을 움직인다면, 세 꽃에 똑같은 숫자의 벌이 앉게 됨을 발견했습니다. 꿀벌은 일을 하려면 에너지를 아껴야 하기에, 마야는 목표를 달성하기 위해 꿀벌이 날아야 하는 최소 거리의 합을 계산한 후 그에 맞춰 벌을 어느 꽃으로 이동할지 정하려 합니다.

여왕벌 마야를 도와 꿀벌이 날아야 하는 최소 거리의 합을 출력하는 프로그램을 작성합시다.

표준 입력의 첫 줄에 각각 왼쪽, 가운데, 오른쪽 꽃에 있는 벌의 수를 나타내는 세 정수 A, B, C가 주어집니다. 정수는 공백으로 나뉘어져 있습니다. 
프로그램은 하나의 줄에 꿀벌이 날아야 하는 최소 거리의 합을 의미하는 정수 하나를 출력해야 합니다. 

>>>코드

a, b, c = map(int, input().split())
print(c-a)



2. 백준 11282 한글
한글의 각 글자는 초성, 중성, 종성으로 이루어져 있고, 이 세 가지를 모아써서 한 글자를 나타낸다.

초성은 ㄱ, ㄲ, ㄴ, ㄷ, ㄸ, ㄹ, ㅁ, ㅂ, ㅃ, ㅅ, ㅆ, ㅇ, ㅈ, ㅉ, ㅊ, ㅋ, ㅌ, ㅍ, ㅎ로 총 19개가 있고, 중성은 ㅏ, ㅐ, ㅑ, ㅒ, ㅓ, ㅔ, ㅕ ㅖ, ㅗ, ㅘ, ㅙ, ㅚ, ㅛ, ㅜ, ㅝ, ㅞ, ㅟ, ㅠ, ㅡ, ㅢ, ㅣ로 총 21개, 종성은 없음, ㄱ, ㄲ, ㄳ, ㄴ, ㄵ, ㄶ, ㄷ, ㄹ, ㄺ, ㄻ, ㄼ, ㄽ, ㄾ, ㄿ, ㅀ, ㅁ, ㅂ, ㅄ, ㅅ, ㅆ, ㅇ, ㅈ, ㅊ, ㅋ, ㅌ, ㅍ, ㅎ로 총 28개가 있다.

첫 번째 글자는 초성에서 ㄱ, 중성에서 ㅏ, 종성에서 없음을 합친 "가"가 되고, 두 번째 글자는 초성에서 ㄱ, 중성에서 ㅏ, 종성에서 ㄱ을 합친 "각"이 된다. 마지막 글자는 초성에서 ㅎ, 중성에서 ㅣ, 종성에서 ㅎ를 합친 "힣"이 된다.

초성과 중성, 그리고 종성을 합쳐서 만들 수 있는 글자의 개수는 총 19*21*28 = 11,172개가 된다.
입력으로 N이 주어졌을 때, N번째 글자를 구하는 프로그램을 작성하시오.

첫째 줄에 N(1 ≤ N ≤ 11,172)이 주어진다.
첫째 줄에 N번째 글자를 출력한다. 문자열의 인코딩은 UTF-8을 사용해야 한다.

>>>코드

print(chr(44031 + int(input())))



3. 백준 11283 한글 2
한글의 각 글자는 초성, 중성, 종성으로 이루어져 있고, 이 세 가지를 모아써서 한 글자를 나타낸다.

초성은 ㄱ, ㄲ, ㄴ, ㄷ, ㄸ, ㄹ, ㅁ, ㅂ, ㅃ, ㅅ, ㅆ, ㅇ, ㅈ, ㅉ, ㅊ, ㅋ, ㅌ, ㅍ, ㅎ로 총 19개가 있고, 중성은 ㅏ, ㅐ, ㅑ, ㅒ, ㅓ, ㅔ, ㅕ ㅖ, ㅗ, ㅘ, ㅙ, ㅚ, ㅛ, ㅜ, ㅝ, ㅞ, ㅟ, ㅠ, ㅡ, ㅢ, ㅣ로 총 21개, 종성은 없음, ㄱ, ㄲ, ㄳ, ㄴ, ㄵ, ㄶ, ㄷ, ㄹ, ㄺ, ㄻ, ㄼ, ㄽ, ㄾ, ㄿ, ㅀ, ㅁ, ㅂ, ㅄ, ㅅ, ㅆ, ㅇ, ㅈ, ㅊ, ㅋ, ㅌ, ㅍ, ㅎ로 총 28개가 있다.

첫 번째 글자는 초성에서 ㄱ, 중성에서 ㅏ, 종성에서 없음을 합친 "가"가 되고, 두 번째 글자는 초성에서 ㄱ, 중성에서 ㅏ, 종성에서 ㄱ을 합친 "각"이 된다. 마지막 글자는 초성에서 ㅎ, 중성에서 ㅣ, 종성에서 ㅎ를 합친 "힣"이 된다.

초성과 중성, 그리고 종성을 합쳐서 만들 수 있는 글자의 개수는 총 19*21*28 = 11,172개가 된다.
한글이 주어졌을 때, 몇 번째 글자인지 구하는 프로그램을 작성하시오.

첫째 줄에 글자 하나가 주어진다. 주어지는 글자는 UTF-8로 인코딩 되어 있는 한글이며, 문제 설명에 나온 방법으로 만들 수 있다. 입력으로 주어진 글자가 몇 번째인지 출력한다.

>>>코드

print(ord(input())-44031)



4. 백준 20232 Archivist
The team of problemsetters of Northwestern Russia Regional Contest welcomes you! Our regional contest was founded in 1995 under the name "Collegiate Programming Championship of St Petersburg". Here is the list of the contest winners:

1995: ITMO
1996: SPbSU
1997: SPbSU
1998: ITMO
1999: ITMO
2000: SPbSU
2001: ITMO
2002: ITMO
2003: ITMO
2004: ITMO
2005: ITMO
2006: PetrSU, ITMO
2007: SPbSU
2008: SPbSU
2009: ITMO
2010: ITMO
2011: ITMO
2012: ITMO
2013: SPbSU
2014: ITMO
2015: ITMO
2016: ITMO
2017: ITMO
2018: SPbSU
2019: ITMO

Help the contest archivist to remember the results of each contest and write a program that will read the year and print contest winners of that year in exactly the same format as above.

The only line of input contains a single integer y (1995 <= y <= 2019), denoting the year. You don't need to process year numbers less than 1995 or greater than 2019, or incorrect year formats. It is guaranteed that you will be given a number between 1995 and 2019, inclusive.
Print the winner of the contest in year y exactly in the same format as in the list above.

>>>해석
러시아 북서 지역 대회의 문제 출제 팀이 당신을 환영합니다! 
이 지역 대회는 1995년 "상트페테르부르크 대학 프로그래밍 챔피언십"이라는 이름으로 시작됐습니다.
아래는 역대 대회 우승자입니다:

1995: ITMO
1996: SPbSU
1997: SPbSU
1998: ITMO
1999: ITMO
2000: SPbSU
2001: ITMO
2002: ITMO
2003: ITMO
2004: ITMO
2005: ITMO
2006: PetrSU, ITMO
2007: SPbSU
2008: SPbSU
2009: ITMO
2010: ITMO
2011: ITMO
2012: ITMO
2013: SPbSU
2014: ITMO
2015: ITMO
2016: ITMO
2017: ITMO
2018: SPbSU
2019: ITMO

대회 아카이브 담당자를 도와 각 대회 결과를 기억하고 년도를 입력 받아 위와 똑같은 형식으로 그 해의 우승자를 출력하는 프로그램을 작성합시다.

딱 한 줄에 년도를 의미하는 하나의 정수 y (1995 <= y <= 2019)가 입력됩니다. 
1995보다 작은 수나 2019보다 큰 수, 혹은 형식이 잘못된 년도는 처리할 필요가 없습니다. 
1995와 2019를 포함하는 범위 사이의 숫자가 주어짐은 보장됩니다.
위와 똑같은 형식으로 y년도 대회의 우승자를 출력합니다.

>>>코드

l = {1995: 'ITMO', 1996: 'SPbSU', 1997: 'SPbSU', 1998: 'ITMO', 1999: 'ITMO', 2000: 'SPbSU', 2001: 'ITMO', 2002: 'ITMO', 2003: 'ITMO', 2004: 'ITMO', 2005: 'ITMO', 2006: 'PetrSU, ITMO', 2007: 'SPbSU', 2008: 'SPbSU', 2009: 'ITMO', 2010: 'ITMO', 2011: 'ITMO', 2012: 'ITMO', 2013: 'SPbSU', 2014: 'ITMO', 2015: 'ITMO', 2016: 'ITMO', 2017: 'ITMO', 2018: 'SPbSU', 2019: 'ITMO'}
print(l[int(input())])



5. 백준 24087 アイスクリーム (Ice Cream)
JOI アイスクリーム店は,非常に高さのあるアイスクリームタワーが名物のアイスクリーム店である.アイスクリームタワーとは,ベースとなるアイスクリームの上に,追加のアイスクリームを 0 個以上積み重ねたものである.

ベースとなるアイスクリームの金額は 250 円で,高さは A cm である.追加のアイスクリームは 1 個につき 100 円で,1 個追加するごとにアイスクリームタワーの高さが B cm 増える.

あなたは,この店で高さが S cm 以上のアイスクリームタワーを買いたい.
高さが S cm 以上のアイスクリームタワーを買うために必要な金額の最小値を求めよ.

入力は以下の形式で標準入力から与えられる.

S
A
B

高さ S cm 以上のアイスクリームタワーを買うために必要な金額の最小値を,単位 (円) を省いて出力せよ.

>>>해석
JOI 아이스크림 가게는 말도 안 되게 높은 아이스크림 타워로 유명한 가게입니다. 
아이스크림 타워란, 기본 제공되는 아이스크림 위에 추가로 아이스크림을 0개 이상 쌓아 올린 것입니다.

기본으로 제공되는 아이스크림의 가격은 250엔으로, 그 높이는 Acm입니다. 추가로 올라가는 아이스크림은 한 개 당 100엔으로, 한 개를 추가할 때마다 아이스크림 타워의 높이는 Bcm 증가합니다.

당신은 이 가게에서 높이가 Scm 이상인 아이스크림 타워를 사고 싶습니다. 
높이가 Scm 이상인 아이스크림 타워를 사기 위해 필요한 최소 금액을 구합시다.

아래의 형식으로 표준 입력이 주어집니다.

S
A
B

높이 Scm 이상의 아이스크림 타워를 사기 위한 최소 금액을, 단위를 생략하고 출력합니다.

>>>코드

s = int(input())
a = int(input())
b = int(input())
i = 0
while a<s:
    a += b
    i += 1
print(250 + 100*i)



6. 백준 24072 帰省 (Homecoming)
ビーバーのビ太郎は帰省することにした.今日から A 日後の午前に実家に着き,今日から B 日後の午前に実家を去る.
それを聞きつけたビーバーのビバ子は,今日から C 日後の午後にビ太郎の実家を訪れることにした.
ビバ子がビ太郎に会えるか判定せよ.

入力は以下の形式で標準入力から与えられる.

A B C

ビバ子がビ太郎に会える場合は 1 を,そうでない場合は 0 を出力せよ.

>>>해석
비버인 비버타로는 고향에 내려가기로 했습니다. 
오늘부터 A일 후 오전에 본가에 들러, 오늘부터 B일 후 오전에 본가를 떠나기로 결정했습니다. 
그 얘기를 우연히 들은 비버 비버코는, 오늘부터 C일 후 오후에 본가를 방문하기로 했습니다. 
비버코가 비버타로를 만날 수 있을지 없을지를 판단합시다.

아래의 형식으로 표준 입력이 주어집니다.

A B C

비버코가 비버타로를 만날 수 있는 경우 1을, 그렇지 않은 경우 0을 출력합니다.

>>>코드

a, b, c = map(int, input().split())
if c>=a and c<b:
    print(1)
else:
    print(0)



7. 백준 24079 移動 (Moving)
A 地点から B 地点に移動するのに X 時間,B 地点から C 地点に移動するのに Y 時間かかる.
A 地点から B 地点を経由して C 地点に移動するとき,Z 時間 30 分以内に移動することができるか判定せよ.

入力は以下の形式で標準入力から与えられる.

X
Y
Z

Z 時間 30 分以内に移動することができるならば 1 を,そうでない場合は 0 を出力せよ.

>>>해석
A 지점에서 B 지점으로 이동하는 데 X시간, B 지점에서 C 지점으로 이동하는데 Y시간이 걸립니다.
A 지점에서 B 지점을 경유해 C 지점으로 이동할 때, Z시간 30분 이내에 이동이 가능할지 판단합시다.

아래의 형식으로 표준 입력이 주어집니다.

X
Y
Z

Z시간 30분 이내에 이동이 가능할 경우 1, 그렇지 않을 경우 0을 출력합니다.

>>>코드

x = int(input())
y = int(input())
z = int(input())
if x+y<=z:
    print(1)
else:
    print(0)



8. 백준 13496 The Merchant of Venice
“The Merchant of Venice” has perhaps one of the most interesting “villains” in Shylock, a Jewish moneylender who has been hurt many times and in different ways by Christians in general, and Antonio, the titular merchant, in particular. When Antonio’s friend Bassanio urgently needs to borrow 3000 ducats to woo the lady he loves, Antonio’s money is tied up in his trading fleet; instead, he signs a loan contract with Shylock promising him a pound of his own flesh in case the 3000 ducats are not repaid by the due date. When his fleet is lost in a storm, the plot thickens and the story turns more ominous.

We will ignore here the risk analysis that Antonio should probably have carried out, asking how likely each of his ships would return, and what the probability was that he would not be able to repay the money by the due date. Instead, we will focus on the question of how much money Antonio could repay Shylock by a given date, depending on where his ships are located at the start of the contract.

Specifically, you will be given the number of days until the due date and the speed at which ships travel. You will also be given, for each ship, its distance from Venice and the value of its load in ducats. You are to output the number of ducats Antonio can repay by the due date.

The first line contains a number K ≥ 1, which is the number of input data sets in the file. This is followed by K data sets of the following form:
The first line of a data set contains three integers n, s, d; 0 ≤ n ≤ 200 is the number of ships Antonio owns, 1 ≤ s ≤ 100 is the speed of the ships in miles per day, and 1 ≤ d ≤ 365 the number of days until the contract’s due date.
This is followed by n lines, each containing two integers di, vi. 0 ≤ di ≤ 10000 is the distance of ship i from Venice, in miles, and 0 ≤ vi ≤ 100000 is the value of ship i’s load.

For each data set, first output “Data Set x:” on a line by itself, where x is its number. Then, output the total number of ducats that Antonio could repay Shylock after d days. If a ship exactly arrives after d days, we assume that Antonio can use its cargo already to repay Shylock.
Each data set should be followed by a blank line.

>>>해석
"베니스의 상인"에는 가장 흥미로운 "악당" 중 하나로 기독교도에게 여러 차례 다양한 방식으로 된통 당하는 유대인 고리대금업자 샤일록과, 말만 상인인 안토니오가 등장합니다. 안토니오의 친구 바사니오가 사랑하는 여인에게 구애하기 위해 3000 두카트를 급하게 필요로 할 때, 안토니오의 돈은 무역선에 묶여 있었습니다; 대신 그는 샤일록에게 기한까지 3000 두카트를 돌려주지 못할 경우 살 1파운드를 주겠다는 계약을 하죠. 돌풍으로 함선이 침몰하며 이야기는 불길한 방향으로 흥미진진해집니다.

이 문제에서 무역선이 얼마 정도를 벌어올 수 있는지, 기한까지 돈을 못 갚을 가능성은 얼마인지 등 안토니오가 해야 했던 위기 분석은 무시합시다. 대신 계약을 맺을 때 무역선의 위치에 따라 기한까지 안토니오가 샤일록에게 얼마를 갚을 수 있었는지에 초점을 맞춰보려 합니다.

당신에게는 기한까지 남은 일 수와 무역선이 항해하는 속도가 주어집니다. 
또한 각 배가 베니스로부터 얼마나 떨어져 있는지와 각 배에 몇 두카트가 있는지도 주어집니다. 
기한까지 안토니오가 갚을 수 있는 두카트의 값을 출력합시다.

첫 줄에 데이터의 수를 나타내는 K >= 1이 주어집니다. 이후 아래의 형식으로 K개의 데이터가 주어집니다:
데이터의 첫 줄에 세 정수 n, s, d가 주어집니다; 0 <= n <= 200은 안토니오가 소유한 무역선의 수, 1 <= s <= 100은 배의 속도를 일당 마일로 표시한 값, 1 <= d <= 365는 기한까지 남은 일 수입니다.
다음 n개의 줄에 두 정수 di, vi가 주어집니다. 0 <= di <= 1000는 배 i에서 베니스까지의 거리를 마일로 나타낸 값,  0 <= vi <= 100000는 배 i에 있는 두카트의 값입니다.

각 데이터에 대해 x가 데이터 번호인 "Data Set x:"를 별개의 줄에 출력합니다. 
이후 안토니오가 d일 후 샤일록에게 갚을 수 있는 두카트의 값을 출력합니다. 배가 정확히 d일 후에 도착한 경우에도, 안토니오가 수하물을 샤일록에게 갚는 데 사용할 수 있다고 가정합시다.
각 데이터 뒤에는 공백 한 줄이 이어집니다.

>>>코드

for k in range(int(input())):
    n, s, d = map(int, input().split())
    r = 0
    for i in range(n):
        di, vi = map(int, input().split())
        if di%s == 0:
            if di//s <= d:
                r += vi
        else:
            if di//s < d:
                r += vi
    print('Data Set %d:' %(k+1))
    print(r)
    print()



9. 백준 24083 短針 (Hour Hand)
JOI 高校の生徒である葵はアナログ時計を手に入れた.
この時計には外周に沿って 12 個の目盛りがあり,時計回りに 1 から 12 までの番号が順に付けられている.
この時計の短針は時計回りに回っており,1 時間で目盛り 1 つ分進む.
たった今,短針がある目盛りを指した.この目盛りの番号は A である.
この状態からちょうど B 時間が経過したときに短針が指す目盛りの番号を出力せよ.

入力は以下の形式で標準入力から与えられる.

A
B

短針が A を指してからちょうど B 時間が経過したときに短針が指す目盛りの番号を出力せよ.


>>>해석
JOI 고등학교 학생인 아오이는 아날로그 시계를 가지고 있습니다. 
시계에는 둘레를 따라 12개의 눈금이 있고, 1부터 12까지 번호가 순서대로 붙여져 있습니다.
이 시계의 시침은 시계를 도는데, 1시간에 눈금 하나만큼 이동합니다.
방금 시침이 어느 눈금을 가리켰습니다. 이 눈금의 번호를 A라 합시다.
이 상태로부터 딱 B시간이 경과했을 때 시침이 가리키고 있는 번호를 출력합시다.

아래의 형식으로 표준 입력이 주어집니다.

A
B

시침이 A를 가리키고 딱 B시간이 경과한 때 시침이 가리키고 있는 눈금의 번호를 출력합시다.

>>>코드

a = int(input())
b = int(input())
print((a+b-1)%12 +1)



10. 백준 16693 Pizza Deal
There’s a pizza store which serves pizza in two sizes: either a pizza slice, with area A1 and price P1, or a circular pizza, with radius R1 and price P2.
You want to maximize the amount of pizza you get per dollar. 
Should you pick the pizza slice or the whole pizza?

The first line contains two space-separated integers A1 and P1.
Similarly, the second line contains two space-separated integers R1 and P2.
It is guaranteed that all values are positive integers at most 10^3. We furthermore guarantee that the two will not be worth the same amount of pizza per dollar.

If the better deal is the whole pizza, print ‘Whole pizza’ on a single line.
If it is a slice of pizza, print ‘Slice of pizza’ on a single line.

>>>해석
두 가지 크기의 피자를 파는 피자 가게가 있습니다: 
조각 피자는 A1의 넓이에 가격은 P1이며, 원형 피자는 R1의 반지름에 가격은 P2입니다.
당신은 달러 당 받는 피자의 양을 최대로 만들고 싶습니다.
조각 피자를 사는 게 낫습니까, 원형 피자를 사는 게 낫습니까?

첫 줄에 공백으로 구분된 두 정수 A1과 P1이 주어집니다.
비슷하게, 두 번째 줄에 공백으로 구분된 두 정수 R1와 P2가 주어집니다.
모든 양의 정수의 값은 최대 10^3임이 보장됩니다. 
두 가지 옵션에서 달러 당 받는 피자의 양을 같지 않음도 추가로 보장됩니다.

원형 피자를 사는 게 나을 경우, 'Whole pizza'를 한 줄에 출력합니다.
조각 피자를 사는 게 나을 경우, 'Slice of pizza'를 한 줄에 출력합니다.

>>>해석

import math
a, p1 = map(float, input().split())
r, p2 = map(float, input().split())
if a/p1 > (math.pi * (r**2))/p2:
    print('Slice of pizza')
else:
    print('Whole pizza')



11. 백준 15080 Every Second Counts
Meredith runs a taxi service called Ruber which offers rides to clients in small towns in western Pennsylvania. She wants to get every possible dime out of people who use her taxis, so her drivers charge a flat fee not per minute but per second. It’s important, therefore, to be able to determine the exact amount of elapsed time between the moment a client enters a cab until the moment they leave. Trying to write a program to do this has driven Meredith crazy (pun intended) so she’s come to you for some help.

Input consists of two lines: the first contains the start time and the second contains the end time for a single taxi ride. Each time is of the form hh : mm : ss, giving the hour, minute and seconds. Meredith uses a 24 hour clock, with 0 : 0 : 0 representing 12 midnight and 23 : 59 : 59 representing one second before midnight. Note that the end time may have a value less than the start time value if the ride spans midnight (see the last sample test case for an example of this).

Display the number of seconds between the two times. No cab ride will be equal to or longer than 24 hours.

>>>해석
메레디트는 펜실베니아 서부 작은 마을의 고객에게 택시를 제공하는 루버라는 택시 서비스를 운영 중입니다. 그녀는 그녀의 택시를 이용하는 사람들로부터 가능한 많은 돈을 뽑아내고 싶어하므로, 운전자는 1분 당이 아닌 1초 당 요금을 지불해야 합니다. 따라서 고객이 택시에 탄 순간부터 떠난 순간까지 흐른 시간의 양을 정확하게 측정하는 것이 중요합니다. 메레디트는 이 문제로 미쳐 (드립 주의 - 역자 : 미국 드라마 관련 드립인 거 같은데 잘 모르겠습니다.) 직접 도움을 청하러 왔으므로, 프로그램을 작성합시다.

입력은 두 줄로 주어집니다: 한 번의 택시 운행에 대해 첫 줄에는 시작 시각이, 둘째 줄에는 종료 시각이 주어집니다. 각 시간은 시간, 분, 초를 나타내는 hh : mm : ss 형식으로 주어집니다. 메레디트는 24시간 기준 시계를 사용하는데, 0 : 0 : 0은 자정 12시를 나타내고 23 : 59 : 59가 자정 1초 전을 나타냅니다. 
택시 운전이 자정을 걸쳐 진행됐다면 종료 시각이 시작 시각보다 낮은 값일 수 있음을 명심합시다. 
(마지막 예제를 확인합시다.) 

두 시각 사이가 몇 초인지 출력합니다. 그 어떤 택시 운행도 24시간과 같거나 그보다 길지는 않습니다. 

>>>코드

a = list(map(int, input().split(' : ')))
b = list(map(int, input().split(' : ')))
r = (b[0]*3600+b[1]*60+b[2]) - (a[0]*3600+a[1]*60+a[2])
if r>=0:
    print(r)
else:
    print(r+24*3600)



12. 백준 21638 SMS from MCHS
You work for MCHS (Russian Ministry of Emergency Situations). You have just received a report from Hydro-meteorological Center containing an information about today's weather and the forecast for tomorrow.

According to this report, the air temperature is t_1 degrees today, and the wind speed is v_1 meters per second. Tomorrow the air temperature will be t_2 degrees, and the wind speed will be v_2 meters per second.

You are given a task to notify citizens about the weather for tomorrow via SMS.

The most important goal is to warn citizens in case the storm is possible.
If, according to the forecast, the temperature tomorrow will be negative, and the wind speed will be at least 10 meters per second, you should send a message with following text:

A storm warning for tomorrow! Be careful and stay home if possible!

Otherwise, you may just notify citizens about bad weather changes.
If the temperature tomorrow will be lower than today, then you should send a message with a warning about a cold snap. It should have the following text:

MCHS warns! Low temperature is expected tomorrow.

Otherwise, if wind speed tomorrow will be higher than today, then you should send a message with a warning about strong wind. It should have the following text:

MCHS warns! Strong wind is expected tomorrow.

If none of the above conditions is satisfied, the you don't have to send a message at all.
Given the report from Hydro-meteorological Center, determine, what message has to be sent.

The first line of input contains two integers t_1 and v_1 --- the temperature and the wind speed for today (-50 <= t_1 <= 50; 0 <= v_1 <= 20). 
The second line contains two integers t_2 and v_2 --- the temperature and the wind speed for tomorrow (-50 <= t_2 <= 50; 0 <= v_2 <= 20).

In case if any message has to be sent, output its text.Otherwise, output phrase "No message". 
You can separate message words with spaces and line feeds arbitrarily.

>>>해석
당신은 MCHS(러시아 긴급상황부)에서 일합니다. 
당신은 방금 해양 기상청으로부터 오늘의 날씨 및 내일의 기상 예측 정보를 담은 보고서를 받았습니다.

이 보고서에 따르면, 오늘의 기온은 t1도이며 풍속은 초속 v1미터입니다. 
내일의 기온은 t2도이며 풍속은 초속 v2미터로 예상됩니다.
당신은 문자를 통해 시민들에게 내일의 날씨 정보를 알려야 합니다.
가장 중요한 과제는 폭풍이 예상되면 시민들에게 경고하는 것입니다. 
만약 내일의 기온이 영하이고 풍속이 초속 10m 이상으로 예측되면, 
당신은 아래와 같은 문자 메시지를 보내야 합니다:

A storm warning for tomorrow! Be careful and stay home if possible!

그렇지 않다면, 당신은 좋지 않은 기상 변화만 시민들에게 알려주면 됩니다.
만약 내일의 기온이 오늘보다 낮아진다면, 당신은 한파를 경고하는 메시지를 보내야 합니다. 
내용은 아래와 같습니다:

MCHS warns! Low temperature is expected tomorrow.

만약 기온이 떨어지지 않고 내일의 풍속이 오늘보다 빨라진다면, 
당신은 강풍을 경고하는 메시지를 보내야 합니다. 내용은 아래와 같습니다:

MCHS warns! Strong wind is expected tomorrow.

만약 위의 조건이 아무것도 충족되지 않는다면, 당신은 메시지를 보내지 않아도 됩니다.
해양 기상청으로부터 받은 보고서가 주어질 때, 무슨 메시지를 보내야 하는지 판단합시다.

첫 줄에 오늘의 기온과 풍속을 나타내는 두 정수 t1과 v1이 주어집니다. 
(-50 <= t1 <= 50; 0 <= v1 <= 20) 
둘째 줄에는 내일의 기온과 풍속을 나타내는 두 정수 t2와 v2가 주어집니다. 
(-50 <= t2 <= 50; 0 <= v2 <= 20)

만약 특정 메시지를 출력해야 한다면, 그 메시지를 출력합니다. 
그렇지 않다면, "No message"를 출력합니다.
단어 간 공백이나 줄 바꿈은 임의로 설정해도 됩니다.  

>>>코드

t1, v1 = map(int, input().split())
t2, v2 = map(int, input().split())
if t2<0 and v2>=10:
    print('A storm warning for tomorrow! Be careful and stay home if possible!')
elif t2<t1:
    print('MCHS warns! Low temperature is expected tomorrow.')
elif v2>v1:
    print('MCHS warns! Strong wind is expected tomorrow.')
else:
    print('No message')


13. 백준 17903 Counting Clauses
It’s time for the annual 3-SAT competition, where the contestants compete to answer as many instances of 3-SAT as possible within the time limit. 3-SAT is a classic NP-complete problem, where you are given a boolean formula in conjunctive normal form, in which we have a set of clauses each consisting of exactly three literals. Each literal refer either positively or negatively to a variable, which can be assigned a value of either True or False. The question is whether there exists an assignment to the variables such that every clause evaluates to True. No clause will contain duplicates of a literal (however it is possible that a clause contain both ¬xi and xi). An example of a 3-SAT instance is shown below (from sample input 1):

(¬x1 ∨ x2 ∨ x3) ∧ (¬x1 ∨ ¬x2 ∨ x3) ∧ (x1 ∨ ¬x2 ∨ x3) ∧ (x1 ∨ ¬x2 ∨ ¬x3) ∧ (x1 ∨ x2 ∨ ¬x3)

Øyvind is a judge in the competition, responsible for verifying the quality of problem instances crafted by the other judges before the contest starts. Øyvind hates 3-SAT instances with less than eight clauses – as these are always satisfiable they provide no real challenge for the contestants. Therefore, he will deem such problem instances to be unsatisfactory. Whenever Øyvind encounters an instance with eight or more clauses he knows that it is a real challenge to figure out whether this instance is satisfiable or not – and therefore he will judge these problem instances to be satisfactory. Given an instance of 3-SAT, can you help find Øyvind’s judgement?

The input is a single instance of the 3-SAT problem. The first line is two space-separated integers: m (1 ≤ m ≤ 20), the number of clauses and n (3 ≤ n ≤ 20), the number of variables. Then m clauses follow, one clause per line. Each clause consists of 3 distinct space-separated integers in the range [−n, n] \ {0}. For each clause, the three values correspond to the three literals in the clause. If the literal is negative, that means that the clause is satisfied if the corresponding variable is set to False, and if it is positive the clause is satisfied if the variable is set to True.

Print “satisfactory” on a single line if Øyvind finds the 3-SAT instance to be satisfactory, and “unsatisfactory” otherwise.

>>>해석
참가자가 제한 시간 안에 최대한 많은 3-SAT 문제를 푸는 3-SAT 문제 대회가 돌아왔습니다. 3-SAT 문제는 대표적인 NP 문제로, 불 논리식이 각 절이 정확히 세 개의 리터럴로 이루어진 논리곱 표준형으로 주어집니다. 각 리터럴은 참 또는 거짓을 값으로 갖는 변수를 긍정하거나 부정함으로써 형성됩니다. 
모든 절이 참이 되도록 변수를 설정할 수 있는지 여부를 판단하는 것이 문제입니다. 
그 어떤 절도 똑같은 리터럴을 중복해 포함하지는 않습니다 
(다만 절이 ¬xi와 xi를 동시에 포함할 수는 있습니다). 
아래는 3-충족 가능성 문제의 예시입니다 (샘플 입력 1이기도 합니다.):

(¬x1 ∨ x2 ∨ x3) ∧ (¬x1 ∨ ¬x2 ∨ x3) ∧ (x1 ∨ ¬x2 ∨ x3) ∧ (x1 ∨ ¬x2 ∨ ¬x3) ∧ (x1 ∨ x2 ∨ ¬x3)

오이빈드는 대회의 심판으로, 대회가 시작하기 전 다른 심판이 만든 문제의 질을 검사할 책임이 있습니다. 
오이빈드는 절이 8개 미만인 3-SAT 문제를 싫어합니다 - 대회 참가자에게 큰 어려움이 되지 않기 때문입니다. 
그러므로 그는 이러한 문제에 만족하지 못할 것입니다. 
오이빈드는 절이 8개 이상인 문제는 문제의 답을 구하는 것이 어려움을 알고 있으므로 - 이러한 문제에는 만족할 것입니다. 3-SAT 문제의 예시가 주어질 때, 오이빈드가 어떤 판단을 할지 찾아줄 수 있나요?

입력은 3-SAT 문제의 예시입니다. 첫 줄에는 공백으로 나뉜 두 정수가 들어옵니다: 
절의 수를 나타내는 m (1 <= m <= 20)과 변수의 수를 나타내는 n (3 <= n <= 20)입니다. 
그리고 m개의 절이 줄마다 하나 입력됩니다. 
각 절은 공백으로 나누어진 [-n, n] \ {0} 범위의 3개의 정수로 구성됩니다. 
각 절에서, 세 정수는 절의 세 리터럴에 대응됩니다. 만약 리터럴 값이 음수이면 상응하는 변수가 거짓일 때 참이 됨을 의미하며, 양수이면 상응하는 변수가 참일 때 참이 됨을 의미합니다.

만약 오이빈드가 3-SAT 문제 예시에 만족하면 "satisfactory"를, 아니면 "unsatisfactory"를 출력합니다.

>>>코드

n, m = map(int, input().split())
for i in range(n):
    input()
if n<8:
    print('unsatisfactory')
else:
    print('satisfactory')



문제가 긴데 그냥 n(절의 길이)가 8 이상이면 만족한다.

14. 백준 14065 Gorivo
Mirko je nedavno otputovao u Ameriku i tamo je iznajmio moderan američki kabriolet narančaste boje s bijelim crtama, automatskim mjenjačem, navigacijom, i . . . prikaznikom na engleskom jeziku s imperijalnim sustavom mjera. Najviše ga muči to što je potrošnja goriva izražena u miljama po galonu, pa mu je teško procijeniti koliko mu mašina zapravo "guta" benzina.
Napišite program koji će preračunati potrošnju goriva iz broja milja po galonu u broj litara po 100 kilometara.
Napomena: 1 galon jednak je točno 3.785411784 litara, a 1 milja jednaka je točno 1609.344 metara.

U prvom i jedinom retku ulaznih podataka nalazi se decimalni broj x (1 ≤ x ≤ 1000) s dvije decimale, koji predstavlja koliko milja po galonu prijede Mirkov automobil. 
Potrebno je ispisati jedan decimalan broj, koliko litara troši automobil na 100 kilometara. Tolerirat će se apsolutno i relativno odstupanje od službenog rješenja za 10−6 .

>>>해석
미르코는 최근 미국으로 여행을 가 하얀 줄무늬, 자동 변속기, 내비게이션, 그리고... 영어 계기판과 영국식 도량형을 장착한 오렌지색 미국 차를 빌렸습니다. 그를 가장 당황스럽게 한 것은 연료 소모량이 1갤런 당 마일 단위로 표시되어 차가 실제로 가솔린을 얼마나 "잡아먹는지" 알기 어렵다는 점이었습니다.
연료 소모량을 1갤런당 마일에서 100km당 L로 변환하는 프로그램을 작성합시다.
참고: 1갤런은 정확히 3.785411784L이며, 1마일은 정확히 1609.344m입니다.

딱 한 줄에 미르코의 차가 1갤런 당 몇 마일을 가는지 나타내는 소수 두 자리 수 x (1 <= x <= 1000)가 주어집니다.
차가 100km 당 몇 L를 소비하는지 나타내는 하나의 소수를 출력합니다. 
정답으로부터의 절대 오차 또는 상대 오차는 10 ^ (-6)까지 허용됩니다.

>>>코드

print(1/(float(input()) *(0.01609344/3.785411784)))



15. 백준 21631 Checkers
Dima is bored of playing checkers with himself. Since there is nothing but checker pieces to play with, he came up with the following game.

Each piece he has is either white or black. Dima builds a tower by stacking his pieces on top of each other in some order. A black stripe is a sequence of adjacent black pieces, with either a white piece, or the end of the tower at the bottom and top of it. In other words, two adjacent black pieces always belong to the same black stripe. The goal of the game is to get the maximum number of black stripes in the tower.

The game has just started. Dima has a white and b black pieces. 
What is the maximum number of black stripes he can get in his tower?

The only line of input contains two integers a and b --- the number of white and black pieces, respectively (0 <= a, b <= 10^18).
Output a single integer --- the maximum possible number of black stripes.

>>>해석
디마는 이제 혼자 체커 게임을 하는 것도 질렸습니다. 
하지만 가지고 놀 게 체커 말밖에 없으므로, 아래와 같은 게임을 생각해냈습니다.

디마는 흰색 또는 검은색 말을 가지고 있습니다. 그는 어떤 규칙에 따라 말을 쌓아 탑을 만듭니다. 
검은색 줄무늬는 아래 위로 흰색 말 또는 타워의 끝으로 둘러싸인 연속된 검은 말의 모임을 의미합니다. 
다시 말해, 두 개의 인접한 검은 말은 언제나 같은 검은색 줄무늬에 속합니다. 
이 게임의 목표는 탑에서 얻을 수 있는 검은색 줄무늬의 최댓값을 구하는 것입니다.

게임이 막 시작됐습니다. 디마는 a개의 흰색 말과 b개의 검은색 말을 가지고 있습니다. 
그가 탑에서 최대로 얻을 수 있는 검은색 줄무늬의 개수는 몇 개입니까?

한 줄에 각각 흰색 말과 검은색 말의 개수를 의미하는 두 정수 a, b가 주어집니다. 
최대로 얻을 수 있는 검은색 줄무늬의 개수를 의미하는 정수 하나를 출력합니다. 

>>>코드

a, b = map(int, input().split())
if a>=b:
    print(b)
else:
    print(a+1)



16. 백준 22155 Простая задача
Жюри Russian Code Cup приготовило большое количество различных интересных задач. Но все они не нравятся председателю жюри. Он говорит, что все они слишком сложные. А для того, чтобы больше участников решило хотя бы одну задачу, нужна простая задача.

Председатель жюри называет задачу простой, если у нее существует решение, использующее не более одного оператора ветвления и не более двух операторов цикла, либо решение, использующее не более двух операторов ветвления и не более одного оператора цикла. Члены жюри подготовили n различных задач с решениями и представили их на рассмотрение председателю жюри. Он подсчитал количество операторов ветвления и операторов циклов в решении каждой задачи и теперь хочет понять, какие из преложенных ему задач являются простыми.

Вам дано n описаний задач, каждое описание представляет собой два числа: количество операторов ветвления и количество операторов цикла, использующихся в решении задачи.

Необходимо для каждой задачи выяснить, является ли она простой.

Первая строка содержит одно целое число n (1 ≤ n ≤ 121) — количество задач. Далее, в n строках задано по два целых числа i и f (0 ≤ i, f ≤ 10) — количество операторов ветвления и количество операторов цикла, использующихся в решении соответствующей задачи.

Для каждой задачи выведите в отдельной строке «Yes», если задача является простой, и «No» в противном случае.

>>>해석
러시안 코드 컵의 심사위원은 여러 흥미로운 문제를 준비했습니다.
하지만 모든 문제가 심사위원장에 눈에 들지는 않았죠. 심사위원장은 문제가 다 너무 복잡하다고 했습니다.
더 많은 참가자가 최소 한 문제는 풀 수 있도록 하려면, 간단한 문제가 하나는 필요하다며 말입니다.

심사위원장은 풀이가 조건문 하나, 반복문 두 개를 넘게 쓰지 않거나 조건문 두 개, 반복문 하나를 넘게 쓰지 않으면 문제가 간단하다고 판단합니다. 심사위원은 n개의 문제를 풀이와 함께 심사위원장에게 제출했습니다. 심사위원장은 풀이의 조건문과 반복문의 수를 세었고, 이제 어떤 문제가 간단한지 판정하려 합니다.

당신에게 각각 두 숫자로 된 n개의 문제에 관한 설명이 주어집니다: 
이는 문제 풀이의 조건문의 수와 반복문의 수입니다.
각 문제마다 간단한 문제인지 아닌지 판단합시다. 

첫 줄에 문제의 수를 나타내는 하나의 정수 n (1 <= n <= 121)이 주어집니다. 
다음 n개의 줄에 두 정수 i와 f (0 <= i, f <= 10)가 주어집니다. 
- 이는 해당하는 문제 풀이에 필요한 조건문과 반복문의 수입니다.
각 문제에 대해 별개의 줄에 문제가 간단하면 <<Yes>>를, 아니면 <<No>>를 출력합니다.

>>>코드

for _ in range(int(input())):
    i, f = map(int, input().split())
    if (i<=1 and f<=2) or (i<=2 and f<=1):
        print('Yes')
    else:
        print('No')



17. 백준 24183 Affischutskicket
VE OCH FASA! PostNord har för det 1337:e året i rad höjt portot, vilket riskerar att bräcka Programmeringsolympiadens budget.
Varje år skickar PO ut affischer till ca 450 gymnasieskolor. 
Ett utskick består av tre saker: 

- ett kuvert av C4-storlek (229 mm * 324 mm)
- två affischer av A3-storlek (297 mm * 420 mm)
- ett informationsblad av A4-storlek (210 mm * 297 mm)

Det är mycket viktigt att brevet väger högst 50 gram, eftersom portot annars blir dubbelt så högt. För att klara denna magiska viktgräns kan PO styra över vilken sorts papper som används för de tre sakerna. Varje sort har en ytvikt (vikt per area) som typiskt anges i gram / m^2. Notera att kuvertet består av två sammanklistrade ark av C4-storlek, medan ytvikter och ovanstående mått gäller för ett ark.

Skriv ett program som räknar ut den totala vikten för ett brev.

Indatan består av tre heltal mellan 50 och 200, ytvikterna i gram / m^2 för sorterna som används till kuvertet, affischerna respektive informationsbladet.
Skriv ut ett enda decimaltal: vikten på ett fullständigt brevutskick i gram. Svaret ska anges med minst 3 decimalers noggrannhet (d.v.s. vara inom 5 * 10^{-4} från rätt svar).

>>>해석
충격과 공포! 1337년 연속으로 PostNord가 우편 가격을 인상해, 프로그래밍 올림피아드의 예산이 초과될 위기에 처했습니다. 
매년 주최 측은 약 450개의 고등학교에 우편을 보냅니다. 우편은 세 가지로 이루어져 있습니다.

- C4 크기의 봉투 (229mm * 324mm)
- A3 크기의 포스터 2개 (297mm * 420mm)
- A4 크기의 대회 안내지 (210mm * 297mm)

우편은 50g을 초과해서는 안 되는데, 초과할 경우 우편 요금이 거의 두 배가 되기 때문입니다. 무게 조절을 위해 주최 측은 세 부속품의 종이의 종류를 정하려 합니다. 종이는 종류에 따라 기본 무게(기본 단위 당 무게)가 달라지는데, 통상적으로 g / m^2으로 나타냅니다. 단위 무게나 크기는 한 장을 기준으로 주어지는 반면, C4 크기의 봉투는 C4 크기의 종이 두 장을 붙여 만듦을 유의합시다.
우편의 총 무게를 계산하는 프로그램을 작성합시다.

봉투, 포스터, 대회 안내지에 사용된 종이의 기본 무게를 나타내는 50과 200 사이의 세 정수가 순서대로 g / m^2으로 주어집니다.
우편의 총 무게를 g으로 표현한  하나의 소수를 출력하시오. 정답은 소수 셋째 자리까지는 일치해야 합니다. (즉, 정답과의 오차 범위는 5 * 10 ^ -4 이하입니다.)

>>>코드

a, b, c = map(float, input().split())
print(2*a*(0.229 * 0.324) + 2*b*(0.297 * 0.420) + c*(0.210 * 0.297))



18. 백준 24860 Counting Antibodies
Immunoglobulins also known as antibodies are protein molecules. Antibodies play one of the key roles in the immune reaction --- they detect harmful foreign agents --- bacteria or viruses --- and help to eliminate them. Every foreign molecule binds with unique type of antibody. There are plenty of potential harmful agents, so, there should be a tremendous number of immunoglobulin types to neutralize all threats. Huge required amount of immunoglobulin types make it impossible to encode each type in DNA. Luckily, there is a solution.

Immunoglobulins are produced by immune cells: B-lymphocytes based on DNA information --- genes. Immunoglobulin genes are combined from DNA fragments like constructor. Each fragment exists in several variants and is responsible for variable region of immunoglobulin molecule. This process is called somatic recombination. 

Immunoglobulin molecule consists of two identical heavy chains and two identical light chains. There are two types of light chains with similar structure --- kappa and lambda. Both of two light chain types have two variable regions --- V and J. To form a variable region one gene fragment is selected from multiple variants: V_kappa and J_kappa variants for V and J regions respectively in kappa-light chain, or V_lambda and J_lambda variants for V and J regions respectively in lambda-light chain.

There is only one heavy chain type with three variable regions --- V, D and J. To form each of them one gene fragment from V_h, D_h and J_h variants respectively is selected.

You need to count how many possible immunoglobulin molecules can be produced for given values of V_kappa, J_kappa, V_lambda, J_lambda, V_h, D_h and J_h.

The first line contains two integers V_kappa, J_kappa (1 <= V_kappa, J_kappa <= 1500) --- number of gene fragment variants for kappa-light chain  V and J variable regions, respectively.

The second line contains two integers V_lambda, J_lambda (1 <= V_lambda, J_lambda <= 1500) --- number of gene fragment variants for lambda-light chain V and J variable regions, respectively.

The third line contains three integers V_h, D_h and J_h (1 <= V_h, D_h, J_h <= 1000) --- number of gene fragment variants for heavy chain V, D and J variable regions, respectively.

Output one integer --- number of immunoglobulin variants that can be produced.

>>>해석
짧게 항체라고 불리는 면역 글로불린 항체는 단백질 분자입니다. 
항체는 면역 반응에서 중요한 역할을 담당합니다 - 박테리아나 바이러스 같은 위험한 외부 물질을 탐지해 차단하죠. 모든 외부 분자는 특수한 항체에 결합합니다. 잠재적으로 위험한 외부 물질은 정말 많으므로, 이 위협을 모두 중화하기 위해서 면역 글로불린 항체의 종류도 어마어마하게 많습니다. 엄청난 양의 면역 글로불린 항체 유형은 각각을 DNA로 부호화하는 것을 사실상 불가능하게 만듭니다. 다행히, 해법은 있습니다.

면역 글로불린 항체는 면역 세포가 만듭니다: B-세포가 유전자의 DNA 정보를 바탕으로 만들죠. 
면역 글로불린 유전자는 DNA 조각이 합쳐져 형성됩니다. 
각 조각에는 다양한 변종이 존재하고 이는 면역 글로불린 분자의 가변부를 담당합니다. 
이 과정을 통틀어 체세포 재조합이라고 부릅니다. 

면역 글로불린 분자는 두 동일한 중쇄와 두 동일한 경쇄로 이루어져 있습니다. 
경쇄는 비슷한 구조를 가진 두 종류로 나눠집니다 - κ와 λ입니다. 
두 경쇄 종류는 모두 두 가변부를 지니고 있습니다 - V와 J입니다. 
면역 글로불린 분자 하나의 가변부를 형성할 때 다양한 변종 중 하나의 유전자 조각이 선택됩니다: 
κ-경쇄에서 V 가변부와 J 가변부로부터 각각 Vκ와 Jκ 변종이 선택되거나, 
λ-경쇄에서 V 가변부와 J 가변부로부터 각각 Vλ와 Jλ 변종이 선택됩니다.

중쇄는 세 개의 가변부 - V, D, J - 로 이루어지며 종류는 하나밖에 없습니다. 
면역 글로불린 분자 하나의 가변부를 형성할 때 Vh, Dh, Jh 변종에서 각각 하나의 유전자 조각이 선택됩니다.

(그림 참조)

Vκ, Jκ, Vλ, Jλ, Vh, Dh, Jh가 주어질 때, 
얼마나 많은 면역 글로불린 분자가 형성될 수 있는지 계산합시다.

첫 줄에 두 정수 Vκ, Jκ가 주어집니다. 
(1 <= Vκ, Jκ <= 1500) - 이는 각각 κ-경쇄 V와 J 가변부의 유전자 조각 변종 수입니다. 

둘째 줄에 두 정수 Vλ, Jλ가 주어집니다. 
(1 <= Vλ, Jλ <= 1500) - 이는 각각 λ-경쇄 V와 J 가변부의 유전자 조각 변종 수입니다.

셋째 줄에는 세 정수  Vh, Dh, Jh가 주어집니다. 
(1 <=  Vh, Dh, Jh <= 1000) - 이는 각각 중쇄 V, D, J 가변부의 유전자 조각 변종 수입니다.

하나의 정수를 출력합니다 - 이 수는 형성 가능한 면역 글로불린 항체 수를 나타냅니다.

>>>코드

Vκ, Jκ = map(int, input().split())
Vλ, Jλ = map(int, input().split())
Vh, Dh, Jh = map(int, input().split())
print((Vκ * Jκ)*(Vh * Dh * Jh) + (Vλ * Jλ) * (Vh * Dh * Jh))


19. 백준 25784 Easy-to-Solve Expressions
When one looks at a set of numbers, one usually wonders if there is a relationship among them? This task is more manageable if there are only three numbers.

Given three distinct positive integers, you are to determine how one can be computed using the other two. Print 1 if any of the three numbers is the sum of the other two numbers, print 2 if any of the three numbers is the product of the other two numbers, print 3 otherwise. Assume that exactly one of these three messages will apply.

There is only one input line; it contains three distinct positive integers, each between 2 and 1000 (inclusive).
Print the appropriate message as described above.

>>>해석
여러분이 숫자 집합을 볼 때, 여러분은 보통 그 숫자들 사이의 관계가 있는지 궁금해합니다.
숫자가 세 개뿐인 경우라면 이 작업은 쉽게 풀 수 있을 겁니다.
세 개의 중복이 없는 세 개의 0이 아닌 정수가 주어집니다. 
여러분은 다른 두 개의 정수를 사용하여 하나를 계산하는 방법을 결정해야 합니다.
세 숫자 중 하나가 다른 두 숫자의 합이면 1을 출력하고, 세 숫자 중 하나가 다른 두 숫자의 곱이면 2를 출력하고, 그렇지 않으면 3을 출력합니다. 이 세 개의 조건 중 정확히 한 개가 적용된다에 가정합니다.

입력은 오직 한 줄에서 주어집니다.
2에서 1000 사이의 정수 세 개를 공백 구분하여 입력으로 합니다.
위 문제에서 설명한 조건에 맞는 답을 출력합니다.

>>>코드

l = list(map(int, input().split()))
l.sort()
if l[2] == l[0]+l[1]:
    print(1)
elif l[2] == l[0]*l[1]:
    print(2)
else:
    print(3)



20. 백준 25828 Corona Virus Testing
Testing for Corona can be done individually, e.g., 100 people require 100 test kits. Alternatively, the test can be done in groups (pools), e.g., 100 people can be divided into five group of 20 people each and then using only one test kid per group. If one or more groups test positive, then individual tests are needed for each person in those group. So, for our example, five groups will need 5 test kits and let’s say two groups test positive, so we would need additional 40 (2*20) test kits for a total of 45 (5+40) test kits.

Given the data for the two possible testing approaches, determine which approach will use fewer test kits.

There is only one input line; it provides three integers: g (2 ≤ g ≤ 50), indicating the number of groups, p (2 ≤ p ≤ 50), indicating the number of people in each group, and t (0 ≤ t ≤ g), indicating how many groups tested positive (i.e., people in these groups need to be tested individually).

Print 1 (one) if testing everyone individually will use fewer kits, 2 (two) if testing in groups will use fewer kits, and 0 (zero) if the two approaches use the same number of kits.

>>>해석
코로나 바이러스 검사는 개별적으로 수행할 수 있습니다. 
예를 들어 100명의 사람은 100개의 테스트 키트를 필요로 합니다. 
또는 그룹(풀)에서 테스트를 수행할 수 있습니다. 
예를 들어 100명을 각각 20명씩 5개의 그룹으로 나눈 다음 그룹당 한 개의 테스트 키트만 사용할 수 있습니다. 
하나 이상의 그룹이 양성 판정을 받으면 해당 그룹의 각 사람에 대한 개별 테스트가 필요합니다. 
예를 들어, 5개 그룹은 5개의 테스트 키트가 필요하고 2개 그룹이 양성 판정을 받았다고 가정하면, 40개(2*20)개의 테스트 키트가 추가로 필요하여 총 45개(5+40)개의 테스트 키트가 필요합니다.

두 가지 가능한 테스트 접근 방식에 대한 데이터가 주어지면 어떤 접근 방식이 더 적은 테스트 키트를 사용할지 결정하십시오.

첫째 줄에 그룹의 수를 나타내는 g(2 <= g <= 50), 각 그룹의 사람 수를 나타내는 p(2 <= p <= 50), 양성 판정을 받은 그룹(개별 테스트가 필요한 그룹)의 수를 나타내는 t(0 <= t <= g)가 공백으로 구분되어 주어진다.

개별적으로 검사를 수행할 경우 테스트 키트를 적게 사용하면 1을, 그룹 별로 검사를 수행할 경우 테스트 키트를 적게 사용하면 2를, 두 경우가 같은 양의 테스트 키트를 사용하면 0을 출력한다.

>>>코드

g, p, t = map(int, input().split())
if g*p < g + p*t:
    print(1)
elif g*p > g + p*t:
    print(2)
else:
    print(0)
728x90
반응형
728x90
반응형

7/ 03 파이썬 공부
1. 백준 27245 Комната
Комната характеризуется тремя целыми числами: длиной, шириной и высотой, заданными в миллиметрах. Комната считается хорошей, если выполнены следующие условия: отношение меньшей из длины и ширины к высоте хотя бы 2, а также отношение большей из длины и ширины к меньшей не превосходит 2. По заданным размерам комнаты определите, является ли она хорошей.

На вход подаётся три целых числа: w, l и h --- длина, ширина и высота комнаты, каждое на отдельной строке (1000 <= w, l, h <= 10,000).
Если комната является хорошей, выведите <<good>>, иначе выведите <<bad>>.

>>>해석
방의 가로 길이, 세로 길이, 높이가 mm 단위로 주어질 때, 이 방이 좋은 방인지 판별해봅시다.
아래 조건을 모두 만족하는 방을 좋은 방이라고 합니다.

가로와 세로 중 더 짧은 쪽의 길이와 높이의 비는 2 이상이어야 합니다.
가로와 세로 중 더 긴 쪽의 길이와 짧은 쪽의 길이의 비는 2를 초과하면 안 됩니다.

방의 가로 길이, 세로 길이, 높이를 의미하는 3개의 정수 w, l, h가 한 줄에 하나씩 주어집니다.
좋은 방이라면 "good"을, 아니면 "bad"를 따옴표 없이 출력합니다.

>>>코드

w = float(input())
l = float(input())
h = float(input())
if min(w, l)/h >= 2 and max(w, l)/min(w, l) <= 2:
    print('good')
else:
    print('bad')



2. 백준 20867 Rulltrappa
Paulina Osqulda pluggar på KTH i Stockholm, och åker varje morgon till skolan via tunnelbanan. När hon kommer fram till sin tunnelbanestation måste hon åka upp längs en rulltrappa för att komma ut.

I rulltrappan bildas det ofta två olika köer. På den högra sidan av trappan ställer sig folk som vill stå still i rulltrappan, medan man ställer sig på den vänstra sidan om man föredrar att gå i rulltrappan (för att komma upp snabbare).

Paulina har märkt att det oftast bildas en jättelång kö till den vänstra sidan av rulltrappan, eftersom alla är så stressade till jobbet och vill kunna gå snabbt upp för rulltrappan. På sista tiden har hon funderat på om det kanske rentav skulle gå snabbare att istället välja den högra kön, eftersom kön där ofta är kortare.

Rulltrappan är totalt M trappsteg lång. Om man står i rulltrappan färdas man S trappsteg per sekund uppåt i rulltrappan. Om man istället går i rulltrappan färdas man G trappsteg per sekund uppåt.

Totalt kan A personer per sekund börja gå i rulltrappan ur den vänstra kön, medan B personer per sekund kan ställa sig på rulltrappan ur den högra kön. Detta betyder att i början av förloppet går en person på rulltrappan. Innan en ny person går på rulltrappan måste denna vänta 1/A (resp 1/B sekunder) för att kunna gå på rulltrappan.

Den vänstra kön är för närvarande L personer lång, och den högra är R personer lång.

Hjälp Paulina avgöra vilken kö hon ska ställa sig i, för att så snabbt som möjligt nå rulltrappans topp.

Den första raden i indatat består av heltalen M, S, G som är beskrivna i uppgiften. Det gäller att 30 <= M <= 200, 1 <= S <= G <= M.

Nästa rad innehåller decimaltalen A, B som är beskrivna i uppgiften. Det gäller att 0.1 <= A, B <= 1.

Den sista raden innehåller heltalen L, R som är beskrivna i uppgiften. 
Det gäller att 0 <= L, R <= 100.

Skriv ut latmask om det snabbaste alternativet är att välja den högra kön och stå i rulltrappan, eller friskus om det snabbaste alternativet är att välja den vänstra kön och gå i rulltrappan.

Det är garanterat att tiden det tar för Paulina att åka upp för rulltrappan skiljer sig med minst 1 sekund mellan de två köerna, så du behöver aldrig bry dig om fallet när båda alternativen är lika snabba.

>>>해석
파울리나 오스쿨다는 스톡홀름 왕립 공과 대학교에 재학 중이며, 매일 아침 열차를 통해 학교에 갑니다. 
기차역에 도착하면 그녀는 에스컬레이터를 통해 밖으로 나옵니다. 
(오스쿨다는 스톡홀름 왕립 공과 대학교에서 공부하는 공학도를 통칭하는 표현입니다. 
자세한 것은 (링크 생략)을 참고하세요.) 

에스컬레이터에는 종종 두 개의 줄이 형성됩니다. 에스컬레이터 오른쪽에는 가만히 올라가고 싶은 사람이 서 있고, 왼쪽에는 (더 빨리 올라가기 위해) 걸어가는 사람이 있습니다. 

파울리나는 많은 사람이 일로 인해 스트레스를 받아 에스컬레이터를 빨리 올라가고 싶어해 보통은 왼쪽 줄이 아주 길다는 사실을 발견했습니다. 최근 그녀는 종종 오른쪽 줄이 더 짧기 때문에 오른쪽 줄을 선택하는 게 더 빠르지 않을까 생각하곤 합니다.

에스컬레이터는 총 M개의 계단으로 이루어져 있습니다. 
당신이 가만히 있다면, 에스컬레이터는 1초마다 S개의 계단만큼 올라갑니다. 
만약 당신이 걸어 올라간다면, 당신은 1초마다 G개의 계단만큼 올라갑니다.

왼쪽 줄에서는 총 A명이 1초마다 에스컬레이터를 걸어 올라가는 것을 시작할 수 있고, 오른쪽 줄에서는 1초마다 총 B명이 에스컬레이터에 설 수 있습니다. 이는 곧 새로운 사람이 에스컬레이터를 탈 때마다, 줄에 따라 1 / A (혹은 1 / B) 초를 기다려야 한다는 뜻입니다.

현재 왼쪽 줄에는 L명이 있고, 오른쪽 줄에는 R명이 있습니다.

파울리나가 에스컬레이터 끝까지 빠르게 올라가려면 어느 줄을 골라야 하는지 도와줍시다.

입력의 첫 줄에 문제에서 설명한 정수 M, S, G가 주어집니다. 30 <= M <= 200, 1 <= S <= G <= M임은 보장됩니다.

둘째 줄에는 문제에서 설명한 소수 A, B가 주어집니다. 0.1 <= A, B <= 1임은 보장됩니다.
마지막 줄에는 문제에서 설명한 정수 L, R이 주어집니다.  0 <= L, R <= 100임은 보장됩니다.

오른쪽 줄을 골라 에스컬레이터에 가만히 서서 가는 게 더 빠른 경우 latmask를 출력하고, 왼쪽 줄을 골라 에스컬레이터를 걸어 올라가는 게 더 빠를 경우 friskus를 출력합니다.
두 줄을 각각 선택했을 때 에스컬레이터 끝까지 도착하는 시간이 최소 1초 이상 차이가 남은 보장되므로, 두 줄이 똑같은 시간이 걸릴 경우는 고려하지 않아도 됩니다.

>>>코드

m, s, g = map(float, input().split())
a, b = map(float, input().split())
l, r = map(float, input().split())
left = 1/a * l + m/g
right = 1/b * r + m/s
if left<right:
    print('friskus')
else:
    print('latmask')



3. 백준 21591 Laptop Sticker
Your school has provided you with a laptop computer! However, they insist on putting a laptop sticker with their logo on your new computer. That sticker might be very large, and it can’t be rotated! Will it fit, with one centimeter to spare on all sides?

The single line of input contains four integers w_c, h_c, w_s and h_s (1 <= w_c, h_c, w_s, h_s <= 1,000), where w_c is the width of your new laptop computer, h_c is the height of your new laptop computer, w_s is the width of the laptop sticker, and h_s is the height of the laptop sticker. All measurements are in centimeters.

Output a single integer, which is 1 if the laptop sticker will fit on your new laptop computer, without rotating, but with one centimeter space on all sides, and 0 if the laptop sticker won’t fit.

>>>해석
학교가 당신에게 노트북을 제공했습니다! 하지만 그 조건으로 새 컴퓨터에 그들의 로고가 그려진 스티커를 붙일 것을 주장합니다. 스티커는 굉장히 크고 회전할 수도 없습니다! 각 변에 1cm 공간을 남기려 할 때, 스티커가 사이즈에 맞을까요?

한 줄 입력에 wc, hc, ws, hs (1 <= wc, hc, ws, hs <= 1000)이 주어집니다. 
wc는 새 노트북의 너비, hc는 새 노트북의 높이, ws는 노트북 스티커의 너비, hs는 노트북 스티커의 높이입니다. 모든 단위는 cm입니다.

스티커가 회전하지 않고도 새 노트북에 1cm 간격을 남기고 맞는다면 정수 1을, 맞지 않는다면 정수 0을 출력합니다.

>>>코드

wc, hc, ws, hs = map(int, input().split())
if wc >= ws + 2 and hc >= hs + 2:
    print(1)
else:
    print(0)



4. 백준 27262 Лифт
Миша живет на n-м этаже. Когда Миша заходит в подъезд, он смотрит, на каком этаже в этот момент находится лифт и решает, вызвать лифт или пойти по лестнице.

Сегодня лифт находится на k-м этаже. Миша заходит в подъезд на 1 этаже. Он поднимается на один этаж за a секунд. Лифт перемещается на один этаж за b секунд. Временем входа в лифт и выхода из лифта, а также перемещения к лестнице и обратно можно пренебречь.

Помогите Мише принять решение, выведите, за какое время он попадет на свой этаж на лифте и по лестнице, соответственно.

На ввод подаются целые числа: n, k, a и b.
2 <= n <= 100, 1 <= k <= 100, 1 <= a, b <= 1000.

Выведите два целых числа: время, за которое Миша поднимется на свой этаж на лифте, и время, за которое Миша поднимется на свой этаж по лестнице.

>>>해석
미샤는 n층에 삽니다. 입구에 서면, 미샤는 엘리베이터가 몇 층에 있는지 보고 엘리베이터를 부를지 계단으로 걸어 올라갈지 결정합니다.

오늘 엘리베이터는 k층에 있습니다. 미샤가 서 있는 입구는 1층입니다. 
한 층을 계단으로 걸어 올라가는 데 걸리는 시간은 a초입니다. 엘리베이터는 한 층 당 b초의 속도로 움직입니다. 엘리베이터에 들어가는 시간과 엘리베이터를 나가는 시간, 계단으로 갔다가 계단에서 오는 시간은 무시합니다.

계단을 활용할 때와 엘리베이터를 사용할 때 미샤가 자기가 사는 층까지 가는 데 걸리는 시간을 각각 출력해 미샤의 결정을 도와줍시다.

정수가 입력으로 주어집니다: n, k, a, b. (2 <= n <= 100, 1 <= k <= 100, 1 <= a, b <= 1000)

두 정수를 출력합니다: 미샤가 층까지 엘리베이터로 갈 때 걸리는 시간과 계단을 사용할 때 걸리는 시간입니다. 

>>>코드

n, k, a, b = map(int, input().split())
print((n+k-2)*b, (n-1)*a)



5. 백준 27541 末尾の文字 (Last Letter)
JOI 高校の生徒である葵は,文字列 JOIG が,文字列 JOI の末尾に文字 G を付け加えてできることに気が付いた.
そこから葵は,様々な文字列について,末尾に文字 G を付け加えたり,末尾の文字 G を取り除いて遊ぶようになった.
具体的には,葵は文字列を見ると次のように遊ぶ.
見た文字列の末尾の文字が G のとき,末尾の文字 G を取り除いた文字列を思い浮かべる.
取り除く文字は末尾の 1 文字のみである.
見た文字列の末尾の文字が G でないとき,文字列の末尾に文字 G を付け加えた文字列を思い浮かべる.
長さ N の文字列 S が与えられる.葵が文字列 S を見たとき思い浮かべる文字列を求めるプログラムを作成せよ.

入力は以下の形式で与えられる.

N
S

葵が文字列 S を見たとき思い浮かべる文字列を出力せよ.

>>>해석
JOI고등학교 학생인 아오이는 문자열 JOIG가, 문자열 JOI의 끝에 문자 G를 더해 완성된다는 걸 알게 되었다.
그래서 아오이는 다양한 문자열의 끝에 G를 붙이거나 문자열 끝의 G를 빼면서 놀게 되었다.
구체적으로는 아오이는 문자열을 볼 때 다음과 같이 놀았다.
본 문자열의 끝의 문자가 G이면 그 문자 G를 뺀 문자열을 떠올린다. 뺄 때는 맨 뒤의 한글자만 뺀다.
본 문자열의 끝이 G가 아니면, 문자열 끝에 G를 붙인 문자열을 떠올린다.
길이 N의 문자열 S가 주어진다. 아오이가 문자열 S를 볼 때 떠올리는 문자열을 구하는 프로그램을 작성하시오.

입력은 다음과 같이 주어진다.

N
S

아오이가 문자열 S를 볼 때 떠올리는 문자열을 출력하시오.

>>>코드

n = int(input())
s = input()
if s[-1] == 'G':
    print(s[:-1])
else:
    print(s + 'G')



6. 백준 22015 金平糖 (Konpeito)
JOI 高校の生徒である葵と凛は,教師の理恵先生と一緒に 3 人で金平糖を同じ数だけ食べることにした.
いま,葵は A 粒,凛は B 粒,理恵先生は C 粒の金平糖を食べた.
3 人が食べた金平糖の個数を等しくするには,最小で合計いくつの金平糖を追加で食べる必要があるだろうか.
3 人が食べた金平糖の個数 A, B, C が与えられたとき,追加で食べる金平糖の個数の最小値を求めるプログラムを作成せよ.

入力は以下の形式で標準入力から与えられる.

A B C

標準出力に,追加で食べる金平糖の個数の最小値を 1 行で出力せよ.

>>>해석
JOI 고등학교의 학생인 아오이와 린은 교사인 리에 선생님과 함께 세 명이 같은 수의 별사탕을 먹기로 했습니다. 지금 아오이는 A개, 린은 B개, 리에 선생님은 C개의 별사탕을 먹었습니다. 
세 명이 먹은 별사탕의 개수를 똑같이 하기 위해 최소 몇 개의 별사탕을 추가로 먹어야 할까요.
세 명이 먹은 별사탕의 개수 A, B, C가 주어질 때, 추가로 먹어야 하는 별사탕의 개수의 최솟값을 구하는 프로그램을 작성합시다.

아래의 형식으로 표준 입력이 주어집니다.

A B C

추가로 먹어야 하는 별사탕 개수의 최솟값을 한 줄에 출력합니다.

>>>코드

a, b, c = map(int, input().split())
print(max(a,b,c)*3 - (a+b+c))



7. 백준 20976 2 番目に大きい整数 (The Second Largest Integer)
3 つの整数 A, B, C が与えられる.これらのうち 2 番目に大きい数を出力せよ.

入力は以下の形式で標準入力から与えられる.

A B C

A, B, C のうち,2 番目に大きい数を出力せよ.

>>>해석
세 정수 A, B, C가 주어집니다. 이중 두 번째로 큰 수를 출력합시다.

아래의 형식으로 표준 입력이 주어집니다.

A B C

A, B, C 중 두 번째로 큰 수를 출력합니다.

>>>코드

l = list(map(int, input().split()))
l.sort()
print(l[1])



8. 백준 20673 Covid-19
The ministry of health in Neverland has recently published a colorcoded chart to help people better understand the level of Covid-19 risk in different cities, and take appropriate actions and precautions based on the risk level.

In this chart, each city is colored either red, yellow, or white, based on some indicators showing the coronavirus risk level at that city. After exploring several models, the ministry has reached the following criteria for classifying the cities. For a given city, if the average number of new cases per day over the past two weeks is at most 50 per one million population, and the average number of new hospitalizations per day over the past two weeks is at most 10 in every one million population, then the city is marked as white, meaning that the city is in a low-risk zone. On the other hand, if the average number of new hospitalizations per day in a city over the past two weeks is more than 30 per one million population, then the city is categorized as high-risk and is color-coded red. All other cities are colored yellow.

While the data for new cases and hospitalizations are publicly available, the ministry does not update its colorcoded chart very frequently. Hana, a curious student, likes to know the risk level of her city at any point of time, before the ministry publishes its updated chart. She can obtain the average number of new cases and new hospitalizations from the Internet, but she needs your help to convert this data to a color code that better demonstrates the risk level at her city.

The input consists of two lines. The first line contains an integer p (0 ⩽ p ⩽ 1000), showing the average number of new cases per day in every one million population in Hana’s city over the past two weeks. The second line contains an integer q (0 ⩽ q ⩽ 500), showing the average number of new hospitalizations per day in every one million population over the past two weeks in that city. Note that q ⩽ p.

In the output, print the color-code of Hana’s city. It must be either White, Yellow, or Red.

>>>해석
네버랜드의 보건부는 최근 사람들이 각 도시의 코로나19 위험 수준을 보다 잘 이해해 적절한 예방 및 조치를 취할 수 있도록 색상 그래프를 만들어 발표했습니다.

 이 그래프에서 각 도시는 그 도시의 코로나 바이러스 위험 수준을 나타내는 여러 지표를 기반으로 빨강, 노랑, 또는 하양으로 표시됩니다. 여러 모델을 시도해본 후, 보건부는 도시를 다음과 같은 기준으로 구분하기로 했습니다. 특정 도시에 대하여, 지난 2주 동안 하루 신규 확진 수의 평균이 최대 100만 명 당 50명이고 또 지난 2주 동안 하루 신규 입원 수의 평균이 최대 100만 명 당 10명이라면 그 도시는 하양으로 표시되어 저위험군임을 나타냅니다. 반면 지난 2주 동안 하루 신규 입원 수의 평균이 100만 명 당 30명보다 많다면, 그 도시는 고위험군으로 분류되어 빨강으로 표시됩니다. 나머지 도시는 모두 노랑으로 표시됩니다.

신규 확진과 입원에 관한 데이터는 누구나 접근 가능하지만, 보건부는 색상 그래프를 그렇게 자주 업데이트하지는 않습니다. 호기심이 많은 학생인 한나는 보건부가 그래프를 업데이트하기 전에 어느 시간이건 그녀가 사는 도시의 위험 수준을 알고 싶습니다. 그녀는 인터넷에서 평균 신규 확진 수와 입원 수를 구할 수 있지만, 그녀의 도시의 위험 수준을 보다 잘 표현하기 위해서는 이 데이터를 색상 그래프로 변환하는 당신의 도움이 필요합니다.

입력은 두 줄입니다. 첫 줄에는 지난 2주 동안 100만 명이 사는 한나의 도시에서 나온 하루 신규 확진 수의 평균인 p (0 <= p <= 1000)가 주어집니다. 둘째 줄에는 지난 2주 동안 한나의 도시에서 100만 명 당 하루 신규 입원 수의 평균인 q (0 <= q <= 500)가 주어집니다. q <= p임을 명심합시다.

색상 그래프에서 한나가 사는 도시의 색상을 출력합니다. 출력은 White, Yellow, 또는 Red 중 하나입니다.

>>>코드

p = int(input())
q = int(input())
if p <= 50 and q <= 10:
    print('White')
elif q > 30:
    print('Red')
else:
    print('Yellow')


9. 백준 24196 Gömda ord
Anna skickar hemliga krypterade meddelanden till Bert. 
För att kunna läsa meddelandena måste Bert dekryptera dem med följande algoritm:

- Första bokstaven i indata-strängen tas med i utdata-strängen.
- Varje bokstav som man tar med beskriver var i indatasträngen nästa bokstav finns som ska tas med. Ett 'A' betyder att nästa bokstav finns 1 position fram, ett 'B' innebär 2 positioner fram osv.
- När man kommit till den sista bokstaven i indatat så tar man med den bokstaven och är klar. Indatan är sådan att man alltid kommer till den sista bokstaven.

Hjälp Bert genom att skriva ett program som avkrypterar Annas meddelanden.

Den första och enda raden i indatat innehåller den krypterade strängen (högst 50 tecken). Strängen kommer kunna avkrypteras med ovan beskrivna algoritm utan att man trillar över sista bokstaven. Skriv ut den avkrypterade strängen.

>>>해석
안나가 암호화된 메시지를 버트에게 보냈다. 
메시지를 읽기 위해, 버트는 다음 알고리즘을 사용하여 메시지를 복호화해야 한다.

- 입력 문자열의 첫 번째 문자는 출력 문자열에 포함된다.
- 출력 문자열에 포함된 각 문자는 입력 문자열에서 다음에 포함될 문자의 위치를 나타낸다. 
'A'는 다음 문자가 한 위치 뒤에 있음을 의미하고 'B'는 두 위치 뒤에 있음을 의미한다.
- 입력의 마지막 문자에 도달하면, 해당 문자를 출력 문자열에 포함한 뒤 작업을 완료한다. 
입력은 항상 마지막 문자에 도달한다.

버트를 도와 안나의 메시지를 해독하는 프로그램을 작성하자.

첫째 줄에 대문자로 이루어진 암호화된 문자열(최대 50자)이 주어진다. 
문자열은 위에서 설명한 알고리즘을 사용했을 때 항상 마지막 문자를 포함한다.
복호화한 문자열을 출력한다.

>>>코드

n = input()
i = 0
while i < len(n):
    print(n[i], end = '')
    i = i + ((ord(n[i])-64))


10. 백준 28295 체육은 코딩과목 입니다
UCPC 초등학교의 체육대회 날이 다가오고 있다. UCPC 초등학교 1학년 1반의 학생들은 담임 선생님 종서의 지시에 맞춰 특정한 방향을 바라보는 연습을 하고 있다.

학생들은 초기에 북쪽을 바라보고 있으며, 종서는 다음과 같은 형태의 지시를 총 열 번 내린다:

- 우향우: 각 학생은 현재 상태에서 오른쪽으로 90도 돈다.
- 뒤로 돌아: 각 학생은 현재 상태에서 오른쪽으로 180도 돈다.
- 좌향좌: 각 학생은 현재 상태에서 왼쪽으로 90도 돈다.

종서는 초등학생들이 지시를 정확하게 이행하는 것이 어렵다는 것을 인지하고, 학생들이 자신의 지시를 성공적으로 따른다면 사탕을 나누어 주기로 했다. 학생들을 도와 담임 선생님 종서의 지시대로 바라보는 방향을 바꾸었을 때, 최종적으로 바라보는 방향을 구해보자.

10개의 줄에 걸쳐 종서가 내린 각 지시에 대한 정보를 나타내는 정수 t_i(1 <= i <= 10)가 한 줄에 하나씩 주어진다. t_i의 값은 1, 2, 3 중 하나로,

- t_i=1이라면 i 번째 명령이 우향우임을,
- t_i=2라면 i 번째 명령이 뒤로 돌아임을,
- t_i=3이라면 i 번째 명령이 좌향좌임을 나타낸다.

10개의 지시를 모두 이행한 후 학생들이 바라보는 방향을 나타내는 문자를 출력한다. 
학생들이 바라보는 방향이 북쪽이라면 N, 동쪽이라면 E, 서쪽이라면 W, 남쪽이라면 S를 출력한다.

>>>코드

r = 0
for i in range(10):
    n = int(input())
    r += n*90
if r%360 == 0:
    print('N')
elif r%360 == 90:
    print('E')
elif r%360 == 180:
    print('S')
else:
    print('W')


11. 백준 28281 선물
 N일 뒤는 동원이의 생일이다. 축하해 주자!
준원이는 동원이에게 생일 선물로 양말을 2X개 선물하려 한다. 양말은 시장에서 살 것이다. 
연속한 이틀에 걸쳐서, 준원이는 매일 시장에서 양말을 X개씩 사서 트럭에 담아올 것이다.

시장에서 양말의 가격은 날마다 다를 수 있다. 오늘부터 i번째 날에, 양말은 하나에 A_i원이다.
동원이의 생일까지 N일 남았다! 남은 N일 가운데 연속한 이틀에 걸쳐 양말 2X개를 사는 데 드는 최소 비용은?

첫째 줄에 N과 X가 공백을 사이에 두고 주어진다.
둘째 줄에 N일간 양말의 가격 A_1, A_2, ..., A_N이 공백을 사이에 두고 주어진다.

연속한 이틀에 걸쳐 하루에 양말을 X개씩 구매하는 방법으로, 양말 2X개를 사는 데 드는 최소 비용을 출력한다.

>>>코드

n, x = map(int, input().split())
a = list(map(int, input().split()))
l = []
for i in range(n-1):
    l.append(a[i]+a[i+1])
print(min(l) * x)
728x90
반응형

+ Recent posts