본문 바로가기
PS 문제 풀이/Baekjoon

[BOJ] 백준 1476 날짜 계산

by 까망 하르방 2021. 9. 18.
반응형

출처https://www.acmicpc.net/problem/1476

Approach

▶ 완전탐색 유형이다.

 

완전탐색 기법이란?

가능한 모든 값을 대입해보는 무식한(?) 방법에 해당된다. 문제 내용 속에서 특정 규칙을 찾아서 모든 Case를 대입해보지 않고도 풀리는 경우도 있지만 충분한 제한 공간과 시간이 주어진다면 

zoosso.tistory.com

E, S, M 각각 최대 15, 28, 19를 기준으로 순환된다.

그리고 우리가 알고 있는 연도로 표현했을 때, 가장 오래된(빠른) 연도를 출력하는 것이다.

 

지구(E) 관점에서 수치를 생각해보자.

E = 1 일 때, 만족하는 연도(ans) = 1, 16, 31, 46, ... 으로

 (ans - E)는 15의 배수이다.

 

(ans - E), (ans - S), (ans - M)에 대해

각각 15, 28, 19로 나누어 떨어지는 값을 찾는다

 

C++

#include <iostream>
using namespace std;

int E, S, M, ans;

int main() 
{
	// freopen("input.txt", "r", stdin);
	cin >> E >> S >> M;

	ans = 1;
	while (1)
	{
		if ((ans - E) % 15 == 0 &&
			(ans - S) % 28 == 0 &&
			(ans - M) % 19 == 0 
			)
			break;

		ans++;
	}
	cout << ans << endl;
}

 

Java

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		int e=1, s=1, m=1;
		int E, S, M;
		E = sc.nextInt();
		S = sc.nextInt();
		M = sc.nextInt();
		
		int idx = 1;
		while(true){
			if(e  > 15)
				e = 1;
			if(s > 28)
				s = 1;
			if(m > 19)
				m = 1;
			
			if(e == E && s == S && m == M)
				break;
				
			idx++;	
			e++; s++; m++;
		}
		System.out.println(idx);
	}
}
반응형

'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글

[BOJ] 백준 1057 토너먼트  (0) 2021.09.18
[BOJ] 백준 1155 변형 하노이  (0) 2021.09.18
[BOJ] 백준 1924 2007년  (0) 2021.09.17
[BOJ] 백준 1568 새  (0) 2021.09.15
[BOJ] 백준 1550 16진수  (0) 2021.09.14

댓글