자리수 별 가능한 숫자의 경우의 수를 곱하고 더하여 답을 찾으려 하였으나 생각보다 복잡해서
오류가 나고 문제 푸는데 시간을 초과하였다.
결국 하루는 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;
}
'개발 노트 > 백준, 프로그래머스 풀이' 카테고리의 다른 글
stringstream 문자열 입력 버퍼, 자료형이 섞인 string 을 다룰때 사용 (0) | 2022.06.22 |
---|---|
연습) string 에서 숫자 추출하기 (0) | 2022.06.22 |
[구현 / c++] 상하 좌우 이동 (0) | 2022.06.21 |
[greedy / c++] 최대의 모험단 수 만들기 (0) | 2022.06.21 |
[프로그래머스 2 / c++] 전화번호 목록 - 해시 (0) | 2022.06.21 |
댓글