문제 링크
주의사항
- JAVA를 사용하여 프로그램을 사용하였습니다.
- 백준에서 코드를 작성하였을 때 아래 형태에서 Main에서 결과가 출력되어야 합니다.
public class Main{
public static void main(String[] args){
}
}
문제 설명
접근 방법
브루트 포스란.
모든 경우의 수를 대입시켜서 가장 알맞은 경우의 수를 결과로 출력하는 것입니다.
이 문제는 E,S,M이 최대값이 되면 1로 초기화하며 입력값과 같아질 때까지 반복하는 것으로 문제를 해결하였습니다.
E, S, M이 각각이 최대값이 되었을 때 1로 변화는 것이 이 문제에 핵심으로 볼 수 있습니다.
문제에 해결알고리즘은
1. 입력값 연도와 현재 연도를 비교합니다.
2. 다를 경우 E, S, M을 모두 +1을 해줍니다.
3. E, S, M이 최대값이 되었을 경우 +1이 아닌 1로 초기화해줍니다.
4. 이 과정을 반복하여 입력값과 동일한 E, S, M이 되었을 때 결과를 출력해줍니다.
- BufferedReader를 사용하여 입력 값을 저장하였습니다.
- StringToknizer을 이용하여 E, S, M을 띄어쓰기 기준 나누어서 저장하였습니다.
- 연도 계산하는 yearCal함수를 만들었습니다.
- BufferedWriter에 입력값에 해당하는 연도의 값을 저장하였습니다.
- BufferedWriter에 저장된 결과값을 출력하였습니다.
- yearCal은 입력값과 동일하면 반환하고 다르면 E, S, M을 +1을 하며 최대값일 때에는 1로 초기화를 하였습니다.
결과 코드
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//입력값 처리하는 BufferedReader
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
//결과값 출력하는 BufferedWriter
//-------------입력값 저장-----------
StringTokenizer st = new StringTokenizer(br.readLine());
int E = Integer.parseInt(st.nextToken());
int S = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
//-------함수 실행 및 결과 출력---------
bw.write(yearCal(E,S,M) + "\n");
bw.flush();
bw.close();
br.close();
}
//----------연도 변환 함수----------
public static int yearCal(int E, int S, int M) {
//------연도 기본값 설정-----
int year = 1;
int e=1, s=1, m=1;
while(true) {
if(e==E && s==S && m==M)
break;
if(e==15) //E가 최대값일 때
e=1;
else
e++;
if(s==28) //S가 최대값일 때
s=1;
else
s++;
if(m==19) //M이 최대값일 때
m=1;
else
m++;
year++; //연도 더하기
}
return year;
}
}
'백준' 카테고리의 다른 글
[백준] code.plus(브루트포스,JAVA)1107번, 리모컨 (0) | 2022.03.04 |
---|---|
[백준] 단계별로 풀어보기(단계:21,이분 탐색,JAVA)12015번, 가장 긴 증가하는 부분 수열 2 (0) | 2022.03.03 |
[백준] 단계별로 풀어보기(단계:21,이분 탐색,JAVA)1300번, K번째 수 (0) | 2022.03.01 |
[백준] 단계별로 풀어보기(단계:21,이분 탐색,JAVA)2110번, 공유기 설치 (0) | 2022.02.28 |
[백준] 단계별로 풀어보기(단계:21,이분 탐색,JAVA)2805번, 나무 자르기 (0) | 2022.02.27 |
댓글