개발은 처음이라 개발새발

[조건문/ python3] 2525번 오븐시계 본문

파이썬/백준

[조건문/ python3] 2525번 오븐시계

leon_choi 2022. 6. 12. 23:02
반응형

이번에 풀어볼 문제는 오븐시계입니다. 문제를 쭉 읽어보면 예제입력1의 하단 숫자가 더해지는 것을 확인할 수 있는데요.

다음 예제2와 예제3을 보게 되면 파악할 수 있는 게 몇가지 있습니다. 

 

1. 입력해야 하는 숫자는 3개다.( 처음에 세팅할 시(a), 분(b), 시간과 분에 더해질 타이머(timer))

2. 타이머에 입력되는 숫자에 따라 시과 분에 더해질 방법을 정해야 한다.

3. 조건을 적용해야 할 것은 분이 60이 넘어갔을 때 / 시가 24가 넘어갔을 때를 정해야 한다.

 

이렇게 3가지를 파악해볼 수 있습니다. 그러면 3개의 숫자를 먼저 입력해야 하니 input 함수를 이용한 숫자 입력 코드를 먼저 짜보겠습니다.

a, b = map(int, input().split())
timer = int(input())

timer 변수에 저장한 부분은 지난 번에도 해서 이해가 가지만 a, b 한번에 두개의 변수를 지정한 첫번째 줄의 코드는 익숙하지 않는데요. 이는 한번에 두개 이상의 input 함수를 넣는 것과 여기에 더해 한번에 두개 이상의 input 함수를 정수화(int) 시키는 것을 모두할 수 있는 코드입니다. 

 

우선 두개 이상의 것을 불러올 때 input 함수에는 옆에 .split() 이라는 함수를 사용해 여러개의 열을 불러올 수 있습니다. 그리고 이 여러개의 열을 정수화 시키기 위해서는 map()이라는 함수를 사용해 map(int, input().split())으로 여러 입력값을 정수로 받을 수 있습니다. 

 

그다음에는 timer로 받은 숫자를 어떻게 a와 b에 더해야 하는지인데요. 참고로 a = 시간, b = 분입니다. 시간과 분으로 했을 때 예를 들어 80을 timer 입력한다고 하면 시간에는 1를 분에는 20을 더해야 하는데요. 이를 토대로 알 수 있는 건 60을 기준으로 몫은 시간에 나머지는 분에 더하면 된다는 것을 파악할 수 있습니다. 이를 토대로 코드를 이어서 짜보겠습니다.

 

a, b = map(int, input().split())
timer = int(input())

a += timer // 60
b += timer % 60

여기서 알아야 할 것은 몫을 구할 때는 // , 나머지를 구할 때는 % 사용한다는 것을 알아야 합니다. 이제 조건문이 남았는데요. 위의 코드를 토대로 a와 b에 더했는데 시와 분의 기준을 넘었을 때를 조건문으로 처리해야 합니다.

 

예를 들어 timer에 50을 입력하면 몫은 0이고 나머지는 50이겠죠. 이때 b에 30이 입력됐을 때 저 식대로면 b는 80으로 60이상이 되면 안되는 분의 개념과 맞지 않게 됩니다. 이제 이러한 것들을 조건문으로 알맞게 처리해야 합니다. 그리고 시간을 받는 a는 24가 되면 0으로 처리돼야 합니다.

a, b = map(int, input().split())
timer = int(input())

a += timer // 60
b += timer % 60

if b >= 60:
    a += 1
    b -= 60
if a >= 24:
    a -= 24
    
print(a,b)

이렇게 최종코드를 짰는데요. b가 60 이상일때 시는 당연히 1이 증가해야 하니 a는 a+=1를 했고 분은 기존 값에 60을 뺀것이 분으로 나오니 b-=60을 했습니다. 이렇게 2525번 코딩 완성입니다.

반응형