이번 포스팅에서는 백준 1476번 문제인 "날짜 계산" 문제를 해결하는 과정을 정리하겠습니다. 이 문제는 주어진 세 가지 수 E
, S
, M
에 대해 특정 규칙을 만족하는 연도를 찾는 문제입니다.
문제는 아래와 같은 세 가지 수를 기준으로 특정한 연도를 찾아야 합니다:
우리는 특정한 연도 year
를 찾으려고 합니다. 이 연도는 아래의 조건을 모두 만족해야 합니다:
year % 15 == E
year % 28 == S
year % 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번 문제를 해결할 수 있었습니다.
이 문제는 나머지 연산과 반복문을 잘 이해하고 활용하는 것이 핵심입니다. 무한 루프를 사용하여 특정 조건을 만족할 때까지 반복하며, 범위를 적절히 설정해 효율적인 문제 해결 방법을 도출하는 것이 중요합니다.
코드와 설명이 도움이 되었기를 바랍니다. 다음에도 더 흥미로운 문제로 찾아오겠습니다!