본문 바로가기
코테/구현

[C/C++] 나동빈 시각, 구현

by 상똥 2023. 2. 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

 

(* 책에서는 중첩 반복문을 활용했으나 나는 반복문을 쓰고싶지 않아서 미리 계산을 해두었다. 실제 시험을 볼 때 어떤게 더 유리할지 생각을 해봐야 할 것 같다)