프로그래밍/백준

[파이썬(Python)] 백준 10162번 전자레인지

정정훈훈 2021. 10. 8. 13:57
반응형

 

 

백준 10162번은 전자레인지 문제입니다.

A(5분), B(1분), C(10초)로 된 버튼을 최소한 몇 번 눌러야 하는지를 출력하는 문제입니다.

 

 

 

 

<코드>

T = int(input())

 

A = T // 300

B = T % 300 // 60

C = T % 300 % 60

C1 = C % 10

C2 = C // 10

 

if C1 == 0:

    print(A, B, C2)

elif C1 != 0:

    print(-1)

 

 

(1)

Tint(input())으로 정수형 입력받습니다.

 

-

최소 횟수,,, 생각이 많아지긴 했지만 쉽게 풀 수 있는 문제입니다.

T를 10초 - 1분(60초) - 5분(300초) 순서대로 나눠서 횟수를 출력하기 보다는

5분(300초) - 1분(60초) - 10초, 줄어드는 순서대로 나눠서 횟수를 출력하면 출력 횟수가 최소가 될 거라고 생각했어요.

 

'전자레인지 시간' 문제지만,

'지폐, 동전 계산' 문제와 거의 비슷하다고 볼 수 있죠.

 

 

우선 T의 단위는 '초'이므로

1분과 5분을 60초와 300초로 생각해줍니다.

 

 

(2) (3) (4) (5) (6)

// 산술 연산자를 이용하면 '횟수'

% 산술 연산자를 이용하면 '처리해야 하는 남은 시간'

 

 

A = T // 300

를 이용해서 T를 300으로 나눈 몫을 구하면,

그 몫이 A(5분, 300초)를 누르는 횟수가 됩니다.

 

예를 들어 500초(T)를 눌러야 한다고 할 때,

먼저 300초(5분)1회 누릅니다.

500(T) // 300 = 1

 

 

 

B = T % 300 // 60

% 산술 연산자를 이용해서 T(500)300으로 나눈 나머지를 구하면 200인데,

300초(5분)을 1회 누르고 남은 200초에 해당하는 값입니다.

[나머지값(T%300)을 처리해준다고 이해하면 됩니다]

 

그리고 200초에 해당하는 값으로 60으로 나눈 몫을 구하면,

1분(60초)를 누르는 횟수(3회)가 나오겠죠!

 

 

C = T % 300 % 60

C1 = C % 10

C2 = C // 10

 

 

C는 경우를 나눠서 접근해야 합니다.

 

T가 5분(300초), 1분(60초), 10초 버튼을 눌러서 나누어 떨어진다면

A, B, C 버튼을 누르는 횟수를 각각 출력하면 됩니다.

 

그러나 T가 5분(300초), 1분(60초), 10초 버튼을 눌러서 나누어 떨어지지 않는다면

-1을 출력해야 합니다.

 

 

if C1 == 0:

    print(A, B, C2)

elif C1 != 0:

    print(-1)

 

C1C를 10으로 나눈 나머지,

C2C를 10으로 나눈 몫입니다.

 

'나누어 떨어진다''나머지가 0이다.'

'나누어 떨어지지 않는다' '나머지가 0이 아니다.'

라고 볼 수 있으므로,

 

C1이 0이 될 때횟수를 출력해주고,

0이 아닐 때-1을 출력합니다.

 

이때, C1이 0이 될 때 출력할 버튼 C의 횟수는 C2(몫)가 되어야 함을 유의하세요!

 

 

 

 

 

 

 

코린이 대학생의 풀이였습니다.

풀이에 오류가 있거나 빈약한 부분이 있다면 얼마든지 댓글 남겨주시기 바랍니다.

 

 

 

 

 

https://like-a-happy-cat.tistory.com/ 

 

키보드 꾹꾹이하는 대학생

 

like-a-happy-cat.tistory.com

 

 

https://blog.naver.com/snake6862

 

정훈 블로그 : 네이버 블로그

하고 싶은 거 다 하고 살기

 

 

 

 

 

반응형