본문 바로가기

알고리즘/문제풀이

[1476] 날짜 계산

반응형

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


import java.util.Scanner;

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

오랜만에 하반기를 준비하면서 다시 알고리즘 스터디를 시작했습니다. 코딩테스트 시즌 후에 면접 시즌을 지나면서 알고리즘 공부를 게을리하게 되었는데, 다시 새로운 마음으로 시작하면서 감을 되찾기 위해 약간 쉬운문제 부터 풀게 되었습니다. 알고리즘 공부를 다시 꾸준히 해서 실력을 키워서 원하는 목표를 꼭 이루고 싶습니다 !

문제를 보면 단순한 수학적인 문제인데, 꼼꼼하게 읽지 않으면 한번에 이해하기 쉽지 않았습니다. 처음에 입력 받는 변수는 E, S, M 으로 두었는데 1년이 지날 때 마다 각각 1씩 증가하는데 가지고 있는 범위를 넘어가면 다시 1로 바뀌는 로직을 생각해야 합니다. 그래서 처음에 입력받은 수가 몇년이 지났을 때 만들어지는 것인지 출력하면 되는 문제입니다.

[ 문제 풀이 ]

1. 입력받는 수를 각각 E S M 으로 받습니다.

2. e s m 은 처음 시작하는 1 1 1 로 초기값을 설정 해 주고,

3. 반복문을 통해서 각각의 변수를 1씩 증가시키면서 원하는 값에 몇년 뒤에 도달하는지 cnt 변수에 담습니다.

4. e s m 의 범위를 설정해서 1씩 증가했을 때 그 범위를 넘어가면 다시 1로 초기화하면 간단하게 풀리는 문제입니다.

 

반응형

'알고리즘 > 문제풀이' 카테고리의 다른 글

[9251] LCS  (0) 2019.09.21
[1157] 단어 공부  (0) 2019.09.18
[14426] 이모티콘  (1) 2019.04.20
[17142] 연구소 2  (0) 2019.04.18
[9935] 문자열 폭발  (0) 2019.04.09