이번 포스팅에서는 백준 1476번 문제인 "날짜 계산" 문제를 해결하는 과정을 정리하겠습니다. 이 문제는 주어진 세 가지 수 E, S, M에 대해 특정 규칙을 만족하는 연도를 찾는 문제입니다.
문제는 아래와 같은 세 가지 수를 기준으로 특정한 연도를 찾아야 합니다:
우리는 특정한 연도 year를 찾으려고 합니다. 이 연도는 아래의 조건을 모두 만족해야 합니다:
year % 15 == Eyear % 28 == Syear % 19 == M문제를 해결하기 위한 코드를 구현했습니다. 아래는 코드와 설명입니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class P1476 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] line = br.readLine().split(" "); // 입력 받기
int earth = Integer.parseInt(line[0]) % 15;
int sun = Integer.parseInt(line[1]) % 28;
int moon = Integer.parseInt(line[2]) % 19;
int result = 0;
// 1부터 시작하여 조건을 만족하는 연도를 찾을 때까지 반복
for(int i = 1; ; i++){
if( (i % 15 == earth) && (i % 28 == sun) && (i % 19 == moon)){
result = i;
break;
}
}
System.out.println(result);
}
}
입력 처리:
BufferedReader를 사용해 한 줄로 입력된 값을 받아오고, 이를 공백 기준으로 분리하여 earth, sun, moon 변수에 저장합니다.earth, sun, moon 값을 각각 15, 28, 19로 나눈 나머지를 구해 저장합니다. 이는 문제에서 주어진 연도의 범위를 고려한 것입니다.연도 찾기:
i 값에 대해 조건을 확인합니다.i 값을 result 변수에 저장하고 루프를 종료합니다.결과 출력:
result 값을 출력합니다.이 문제를 해결하기 위한 기본적인 사고 흐름은 다음과 같습니다:
year에 대해 E, S, M이 각각 1부터 시작하므로, 입력값을 각각 15, 28, 19로 나눈 나머지를 비교하는 방식을 선택합니다.이렇게 함으로써 백준 1476번 문제를 해결할 수 있었습니다.
이 문제는 나머지 연산과 반복문을 잘 이해하고 활용하는 것이 핵심입니다. 무한 루프를 사용하여 특정 조건을 만족할 때까지 반복하며, 범위를 적절히 설정해 효율적인 문제 해결 방법을 도출하는 것이 중요합니다.
코드와 설명이 도움이 되었기를 바랍니다. 다음에도 더 흥미로운 문제로 찾아오겠습니다!