https://www.acmicpc.net/problem/1476
1476번: 날짜 계산
준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타
www.acmicpc.net

날짜 변환을 요구하는 문제.
각 자릿수가 16, 28, 19까지 있는 날짜 형식을 우리가 사용하는 연도로 변환해야 한다.
1년이 지날 때마다 각 자리에 1씩 더해지는데 각 자리의 리미트를 넘으면 1로 리셋되며 거기서부터 다시 카운팅 한다.
풀이 방법
어차피 자릿수가 정해져 있음으로 나올 수 있는 연도의 MAX값이 16*28*19
고로 처음에 아예 이 연도를 세 자릿수 연도로 변환을 다 해놓고
입력값에 맞는 연도를 찾아 출력하는 방식으로 풀었다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int[] inputDate= new int[3];
int size = 15*28*19; // 3자리수 연도로 출력할 수 있는 맥스값
int answer = 0;
int[] E = new int[size];
int[] S = new int[size];
int[] M = new int[size];
for(int i=0; i < size; i++){
E[i] = i%15+1;
S[i] = i%28+1;
M[i] = i%19+1;
}
int i=0;
for(String temp : reader.readLine().split(" ")){
inputDate[i] = Integer.valueOf(temp);
i++;
}
boolean find = false;
i=0;
while(!find){
//이 조건을 만족하는 I를 찾는다
if(inputDate[0] == E[i] && inputDate[1] == S[i] && inputDate[2] == M[i]){
find = true;
answer = i+1;
}else{
i++;
}
}
System.out.println(answer);
}
}
'PROGRAMMING > ALGORITHM' 카테고리의 다른 글
| [프로그래머스] 짝지어 제거하기 JAVA (0) | 2021.07.19 |
|---|---|
| [프로그래머스] 음양 더하기 JAVA KOTLIN (0) | 2021.07.12 |
| [백준] 2309번 일곱 난쟁이 JAVA 완전탐색 (0) | 2021.06.14 |
| [프로그래머스] 프린터 JAVA QUEUE (0) | 2021.06.13 |
| [프로그래머스] 가장 큰 수 JAVA (0) | 2021.06.12 |