min's devlog

[완전 탐색] 시각 문제 본문

til/Algorithm

[완전 탐색] 시각 문제

값진 2022. 7. 5. 22:04

풀이코드

완전 탐색 문제로, 가능한 경우의 수를 모두 검사해보는 탐색방법을 사용한다.

 

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