티스토리 뷰
생각
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