티스토리 뷰

알고리즘/백준

[백준] 1476번 날짜 계산

머어하지 2018. 12. 9. 01:19

생각

Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q1000/Q1476.java 준규가 사는 나라는 다른 연도 계산법을 사용한다. E S M 으로 나눠지며 각 년도의 시작은 1이다. E는 1~15, S는 1~28, M은 1~19를 반복하며 1년이 지나면 각년도가 1씩 올라간다. 준규가 사는 나라의 년도가 주어졌을 때, 우리의 년도로 몇 년인지 출력하여라.


처음 생각

카잉 달력 문제 같은 경우랑 같은 풀이법을 적용하면된다. 다만 카잉 달력 같은 경우는 범위가 무척 크기 때문에 정직하게 풀 수 없었지만 이번 날짜 계산 문제는 제한 숫자가 적으므로 정직하게 풀어주었다.

▶ te,ts,tm 변수를 초기값 1로 선언해주고, e,s,m과 같아질 때까지 +1을 해주었다.


다음 생각

조건문을 통해 te는 15가 넘으면 다시 1로 ts는 28이 넘으면, tm은 19가 넘으면 1로 만들어 주었다.

▶ 위와같이 한 번 반복 할 때마다 우리가 사용하는 년수를 +1을 해주었다.

▶ te,ts,tm이 e,s,m과 같아지면 result 변수를 출력하고 반복문을 빠져나오게 하였다.


방안

1) Java 풀이


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package baekjoon.q1000;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
 
public class Q1476 {
    public static void main(String args[]) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int e = Integer.parseInt(st.nextToken()); // 1~15
        int s = Integer.parseInt(st.nextToken()); // 1~28
        int m = Integer.parseInt(st.nextToken()); // 1~19
 
        // 변하는 각 변수 초기화
        int te = 1;
        int ts = 1;
        int tm = 1;
        int result = 0;
        while(true){
            result++// 년도 증가
            // 입력값과 같아진 다면 년도 출력 후 종료
            if(e==te&&s==ts&&m==tm){
                System.out.println(result);
                break;
            }
            te++; ts++; tm++;
            // 각 범위를 넘어서면 1로 초기화
            if(te>15) te=1;
            if(ts>28) ts=1;
            if(tm>19) tm=1;
        }
    }
}
 


2) Python 풀이


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
e,s,m = map(int,input().split())
 
te=1
ts=1
tm=1
result=0
while True:
    result+=1
    if e==te and s==ts and m==tm:
        print(result)
        break
    te+=1
    ts+=1
    tm+=1
    if te>15:
        te=1
    if ts>28:
        ts=1
    if tm>19:
        tm=1

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 15552번 빠른 A+B  (2) 2018.12.11
[백준] 1978번 소수 찾기  (0) 2018.12.10
[백준] 4673번 셀프 넘버  (0) 2018.12.07
[백준] 9095번 1, 2, 3 더하기(DP)  (0) 2018.12.06
[백준] 1463번 1로 만들기  (0) 2018.12.04
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday