본문 바로가기
개발 노트/백준, 프로그래머스 풀이

[구현 / c++] 하루 중 3 이 하나라도 들어간 모든 시각의 경우의 수

by tokkiC 2022. 6. 21.

자리수 별 가능한 숫자의 경우의 수를 곱하고 더하여 답을 찾으려 하였으나 생각보다 복잡해서

오류가 나고 문제 푸는데 시간을 초과하였다. 

결국 하루는 86400 초이므로 생각보다 문제의 가능한 최대 경우의 수가 적으니 완전 탐색이 더 잘맞고

간단하게 코드를 짤 수 있는 문제였다

#include <bits/stdc++.h>
using namespace std;

// 각 시각의 숫자를 모두 체크하는 것은 따로 함수를 만들어 구현하는 것이 편하다

// 각 시각의 자리수마다 3이 하나라도 있는지를 or로 체크하자
bool check(int i, int j, int k){
	if(i%10==3 || j%10==3 || j/10==3 || k%10==3 || k/10==3){
		return true;
	}
	return false;
}

int main(){
	int cnt=0;
	
    // 모든 시각을 돌며 조건을 체크할 것이므로 for문으로 사용가능한 숫자만큼 돈다 
	for(int i=0; i<24; i++){
		for(int j=0; j<60; j++){
			for(int k=0; k<60; k++){
				if(check(i, j, k))		// 시간, 분, 초를 함수로 넘겨서 확인한다
					cnt++;			// 조건에 맞다면 경우의 수를 하나 더한다
			}
		}
	}
	
	cout << cnt << "\n";
	
	return 0;
}

댓글