https://www.acmicpc.net/problem/2525
이 문제는 if 조건문과 관련된 문제다.
https://solution-is-here.tistory.com/98
보기에는 매우 쉬운 문제처럼 보이지만 이 문제를 풀려면 꼭 알아야 되는 함수가 하나 있다.
바로 map 함수이다.
2525번 문제는 첫 째 줄에 두 개의 정수를 입력한다.
우리가 지금까지 사용했던 방식으로는 정수를 한 줄에 하나씩 입력받는 것 밖에 안되는데 문제는 한 줄에 두 개를 요구한다.
1
|
hour,min = map(int, input().split())
|
cs |
그러므로 위의 코드와 같은 map 함수를 사용해야 한다.
함수에 대해 설명하자면 hour,min이라는 변수를 한 줄에 동시에 입력받는 것이다.
원래 input으로 입력받으면 문자열로 입력을 받지만 map 함수에서는 int형으로 바로 입력받을 수 있다.
그리고 input()뒤에 있는 split() 함수는 한 줄에 숫자를 두 개 입력받을 때 중간에 있는 띄어쓰기를 기준으로 숫자를 두 개로 구분한다.
split함수가 있기에 14 30을 14와 30으로 구분할수 있다.
정수를 입력받은 이후에는 if절의 조건문에 대해 생각해 보아야 한다.
코드를 보며 설명하겠다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
hour,min = map(int, input().split())
c = int(input())
hour += c // 60
min += c % 60
if(min >= 60):
min -= 60
hour += 1
if(hour >= 24):
hour -= 24
print(hour,min)
|
cs |
4 ~ 5번째 줄
4번째 줄에서는 //(정수 나누기)연산자를 이용해 c(오븐구이를 하는데 필요한 시간)을 60으로 나누고 더했다.
1시간은 60분이기 때문에 60으로 나눴다.
5번째 줄에서는 %(나머지)연산자를 이용해 C을 60으로 나눈 수를 더했다.
7 ~ 9번째 줄
7번째줄에서 분(min)은 60을 초과하면 안 되기 때문에 만약 분이 60이 넘는다면 시(hour)를 1 더하고 분에서 60을 뺏다.
11 ~ 12번째 줄
시(hour)은 24를 초과하면 안 되기 때문에 만약 시가 24가 넘는다면 시에서 24를 빼도록 했다.