밑의 링크는 CodeUp에서의 문제 링크입니다.
문제는 링크를 통해서 직접 봐주시길 바랍니다.
주의해야 할 점
1. map, split을 사용하는 입력 방식
실수나 정수인 여러 값들이 입력값일 때,
split 메서드를 사용해 공백이나 어떤 문자를 기준으로 입력값을 여러 값들로 분리하고,
map 내장 함수로 각각의 값들을 int형이나 float형으로
정수, 실수 자료형으로 변환하는 하는 기법은 매우 많이 쓰입니다.
코드 이해부터 하고 나면 다른 문제에서도 외운 듯이 사용해봅시다.
num1, num2 = map(int, sys.stdin.readline().split())
2. 성익이가 넣은 골의 개수
성익이가 투입되자마자 한 골을 넣으며,
딱 90분이 되면 성익이가 골을 넣을 타이밍이라고 해도 골을 넣을 수 없다는 것에
주의하면서 문제를 풀면 됩니다.
한 번만에 안 풀리면 여러 가지 경우를 생각해서 맞는 결과가 나오는지 확인해봅시다.
이 주의할 점은 이전에 풀었던 1165번과 같습니다.
밑의 링크는 코드업에서 1165번을 풀고 해설한 제 블로그에 있는 포스팅입니다.
이 문제를 먼저 봤다면, 밑의 링크도 한 번 보세요.
예제 설명
1. 첫 번째 예제
- 입력
80 5 7
- 출력
same
- 설명
입력한 현재 경기 타임, 1반 득점, 2반 득점은 각각 80, 5, 7입니다.
성익이는 투입되자마자 골을 넣고, 딱 90분부터 골을 넣을 수 없으므로, 80, 85분에 골을 넣습니다.
1반의 득점은 기존 5점에 성익이가 넣은 2점을 더한 7점이 됩니다.
1반 득점과 2반 득점이 같으므로 문자열 'same'을 출력합니다.
생각한 풀이 과정
현재 경기 타임, 1반 득점, 2반 득점을 입력합니다.
총 경기 시간은 90분이므로 90에서 성익이가 투입되는 현재 경기 타임을 빼서 남은 경기 시간을 구합니다.
성익이는 투입되자마자 골을 넣고, 이어서 5분마다 골을 넣으며, 경기 종료 시간 90분부터 골을 넣지 못합니다.
남은 경기 시간이 5의 배수라면, 성익이는 남은 경기 시간에 5를 나눈 몫만큼 골을 넣습니다.
남은 경기 시간이 5의 배수가 아니라면, 성익이는 남은 경기 시간에 5를 나눈 몫에 1을 더한만큼 골을 넣습니다.
성익이가 넣은 골의 개수를 1반 득점에 더해줍니다.
1반 득점이 2반 득점보다 크다면, 1반이 이겼으므로 문자열 'win'을 출력합니다.
1반 득점이 2반 득점과 같다면, 동점이므로 문자열 'same'을 출력합니다.
1반 득점이 2반 득점보다 작다면, 1반이 졌으므로 문자열 'lose'를 출력합니다.
제출한 파이썬 코드
# readline을 사용하기 위해 import합니다.
from sys import stdin
# 현재 경기 타임, 1반 득점, 2반 득점을 공백으로 구분해 입력합니다.
# 각각 int형으로 변환합니다.
cur_time, class1_score, class2_score = map(int, stdin.readline().split())
# 남은 경기시간을 저장하는 변수를 선언합니다.
remain_time = 90 - cur_time
# 투입된 성익이가 넣을 골의 개수를 저장할 변수를 선언합니다.
# 처음에는 0으로 초기화합니다.
sungik_goal = 0
# 성익이는 투입되자마자 한 골을 넣고 5분마다 한 골씩 넣으며,
# 딱 90분이 되면 성익이가 골을 넣는 시간이라고 해도 넣을 수 없습니다.
# 남은 시간이 5의 배수라면
if remain_time % 5 == 0:
# 성익이가 넣을 골의 개수는 남은 시간을 5로 나눈 몫입니다.
sungik_goal = remain_time // 5
# 남은 시간이 5의 배수가 아니라면
else:
# 성익이가 넣을 골의 개수는 남은 시간을 5로 나눈 몫에 1을 더한 값입니다.
sungik_goal = remain_time // 5 + 1
# 기존의 1반 득점에 성익이가 넣은 골의 개수를 더해줍니다.
class1_score += sungik_goal
# 1반 득점이 2반 득점보다 크다면
if class1_score > class2_score:
# 문자열 'win'을 출력합니다.
print('win')
# 1반 득점이 2반 득점과 같다면
elif class1_score == class2_score:
# 문자열 'same'을 출력합니다.
print('same')
# 그 외의 경우인 1반 득점이 2반 득점보다 작다면
else:
# 문자열 'lose'를 출력합니다.
print('lose')
제출 결과
댓글