Algorithm/기타

[백준 1476번] 날짜 계산 (자바)

agility 2022. 6. 27. 19:39

백준알고리즘 1476번 : 날짜 계산 (Solved.ac 난이도 Silver5)

 

https://www.acmicpc.net/problem/1476

 

1476번: 날짜 계산

준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타

www.acmicpc.net

 

 

 

숫자 3개를 가지고 날짜를 계산하는 문제이다.
N에서 x를 뺀 숫자가 15의 배수, y를 뺀 숫자가 28의 배수, z를 뺀 숫자가 19의 배수가 되는 정답 N을 구하는 문제이다.

예시에 나온 것처럼 1 2 3이 주어지는 경우,
정답 N(5266)은 
5266에서 1을 뺀 수가 15의 배수이고,
5266에서 2를 뺀 수가 28의 배수이고,
5266에서 3을 뺀 수가 19의 배수일 것이다.

이를 조건식을 변형한뒤, 맞는 숫자가 나올 때까지 숫자를 계속 늘리면 된다.

풀이 과정


1. 숫자 x, y, z를 받는다.
2. while문으로 조건식을 만든다. (x를 뺀수가 15의 배수이고 y를 뺀 수가 28의 배수이며, z를 뺀 수가 19의 배수가 되는 조건을 만족하는 숫자)
3. 조건이 충족하지 않는 경우 숫자를 1씩 높여주며, 조건 충족시 break 후 정답을 출력한다.

 

 

 

▽ 정답 소스 보기

더보기
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class Main {// [Silver5] No1476 : 날짜 계산


    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int x= Integer.parseInt(st.nextToken());
        int y = Integer.parseInt(st.nextToken());
        int z = Integer.parseInt(st.nextToken());

        int ans = 1;
        while(true){
            if ((ans-x)%15==0 && (ans-y)%28==0 && (ans-z)%19==0) {
                break;
            }else{
                ans++;
            }
        }
        System.out.println(ans);
    }}