코테/구현
[C/C++] 나동빈 시각, 구현
상똥
2023. 2. 15. 15:15
문제
00시 00분 00초에 시를 입력받아 단 한 번이라도 3이 들어가는 경우의 수를 출력한다. |
코드
#include <iostream>
using namespace std;
int main() {
int N, cnt;
cin >> N;
if (N < 3)
cout << (N + 1) * 1575;
else if (N < 13)
cout << N * 1575 + 3600;
else if (N < 23)
cout << (N - 1) * 1575 + 2 * 3600;
else
cout << (N - 2) * 1575 + 3 * 3600;
}
풀이
1. 변수는 시각(N)뿐이므로 분, 초에 3이 한 번이라도 들어가는 경우를 미리 계산한다.
2. 시에 3이 들어가는 경우에는 3600, 그렇지 않은 경우에는 시간당 1575번의 경우의 수를 고려할 수 있다.
(*분, 초에 3이 들어가는 경우)
(1) 3n분 m초 : 1*10*6*10 = 600
(2) n3분 m초 : 5*1*6*10 = 300
(3) n분 3m초 : 5*9*1*10 = 450
(4) n분 m3초 : 5*9*5*1 = 225
위를 모두 더하면 1575
(*분, 초 전체 경우의 수)
60*60 = 3600
(* 책에서는 중첩 반복문을 활용했으나 나는 반복문을 쓰고싶지 않아서 미리 계산을 해두었다. 실제 시험을 볼 때 어떤게 더 유리할지 생각을 해봐야 할 것 같다)