min's devlog
[완전 탐색] 시각 문제 본문
풀이코드
완전 탐색 문제로, 가능한 경우의 수를 모두 검사해보는 탐색방법을 사용한다.
import java.util.*;
public class Main {
// 시,분,초를 매개변수로 입력 받아 처리하는 메소드
// 특정한 시각 안에 '3'이 포함되어 있는지의 여부
// main 메소드에서 호출하기 위해 static
public static boolean check(int h, int m, int s) {
if (h % 10 == 3 || m / 10 == 3 || m % 10 == 3 || s / 10 == 3 || s % 10 == 3)
return true;
return false;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// H를 입력받기
int h = sc.nextInt();
int cnt = 0;
for (int i = 0; i <= h; i++) {
for (int j = 0; j < 60; j++) {
for (int k = 0; k < 60; k++) {
// 모든 시각을 확인하며 매 시각 안에 '3'이 포함되어 있다면 카운트 증가
if (check(i, j, k)) cnt++;
}
}
}
System.out.println(cnt);
}
}
풀이
가능한 모든 시각의 경우를 하나씩 세서 푼다. 단순히 시각을 1씩 증가시키면서 3이 하나라도 있는지 확인한다!
완전 탐색 문제로, 가능한 경우의 수를 모두 검사해보는 탐색방법을 사용한다.
check 메소드 > if절에서 '3' 을 찾는 부분이 헷갈렸다.
h는 시간이므로 10으로 나눈 나머지 값이 3이면 일의 자리수가 3인 시간을 찾을 수 있다. 시간은 0시 ~ 23시까지이므로 십의 자리 수는 찾을 필요 없다.
m은 분, s는 초 이므로 10으로 나눈 몫이 3이면 십의 자리수를 찾을 수 있고, 10으로 나눈 나머지가 3이면 일의 자리수를 찾을 수 있다.
간단한 코드이니 다시 틀리지 말아야겠다.
문제 출처 : 나동빈님의 이것이 취업을 위한 코딩 테스트다
'til > Algorithm' 카테고리의 다른 글
[구현] 왕실의 나이트 (0) | 2022.07.05 |
---|---|
5x5 마방진 (0) | 2022.04.07 |
회장 선거 (0) | 2021.07.31 |
[Two pointers] 연속된 자연수의 합 (0) | 2021.07.30 |
연속부분수열 (0) | 2021.07.30 |
Comments