[JAVA-자바] 6064번: 카잉 달력

2025. 1. 3. 13:40·알고리즘/백준

 

유클리드 호제법을 이용해서 최대공약수와 최소공배수를 구하고

최소공배수까지 반복을 수행하면서 만약 정답이 없을 경우 -1를 반환하게 구현하였습니다.

 

해가되는 result는 최초에 x로 지정해주고, 반복마다 x += M을 수행해줌으로써 조건이 이미 만족되었기때문에

y값만 조건문을 통해 검증하였습니다. 연산 전에 -1과 +1를 해준 이유는 예를들어 M이 10이고 x가 10일때

나머지가 항상 0이 나오는 경우 때문에 삽입하였습니다.

 

소스코드:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main {

    public static int getGCD(int a, int b) {
        while (b != 0) {
            int temp = a % b;
            a = b;
            b = temp;
        }
        return a;
    }

    public static int getLCM(int a, int b) {
        return (a * b) / getGCD(a, b);
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int T = Integer.parseInt(br.readLine());

        for (int i = 0; i < T; i++) {
            String[] data = br.readLine().split(" ");
            int M = Integer.parseInt(data[0]);
            int N = Integer.parseInt(data[1]);
            int x = Integer.parseInt(data[2]);
            int y = Integer.parseInt(data[3]);

            int result = x;
            int LCM = getLCM(M, N);
            while (true) {
                if (result > LCM) {
                    result = -1;
                    break;
                }
                if ((result - 1) % N + 1 == y) {
                    break;
                }
                result += M;
            }
            bw.write(result + "\n");
        }
        br.close();

        bw.flush();
        bw.close();
    }
}

 

글의 내용 중 잘못된 점이나 수정이 필요한 부분, 혹은 궁금한 사항이 있다면 언제든 댓글로 남겨주시면 감사하겠습니다.

여러분의 피드백은 더 나은 글을 작성하는 데 큰 도움이 됩니다. 감사합니다.

'알고리즘 > 백준' 카테고리의 다른 글

[JAVA-자바] 15649번: N과 M (1)  (0) 2025.01.09
[JAVA-자바] 1107번: 리모컨  (0) 2025.01.08
[JAVA-자바] 3085번: 사탕 게임  (0) 2025.01.02
[JAVA-자바] 9095번: 1, 2, 3 더하기  (0) 2024.12.23
[JAVA-자바] 1748번: 수 이어 쓰기 1  (0) 2024.12.23
'알고리즘/백준' 카테고리의 다른 글
  • [JAVA-자바] 15649번: N과 M (1)
  • [JAVA-자바] 1107번: 리모컨
  • [JAVA-자바] 3085번: 사탕 게임
  • [JAVA-자바] 9095번: 1, 2, 3 더하기
raven
raven
Github : https://github.com/RabeMaster | Email : ra___be@naver.com
  • raven
    배움을 원하는 사람
    raven
  • 전체
    오늘
    어제
  • 공지사항

    • 안녕하세요
    • 분류 전체보기 (169)
      • 네이버 부스트캠프 10기 (7)
        • 멤버십 (5)
        • 챌린지 (1)
        • 베이직 (1)
      • 공부 (2)
        • JAVA (1)
        • CS (0)
        • 정보처리기사 (1)
      • 알고리즘 (159)
        • 백준 (159)
      • 개발 (1)
        • 백준 확장 프로그램 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 인기 글

  • 태그

    네이버부스트캠프
    회고
    코딩
    알고리즘
    그래프 탐색
    그래프 이론
    자바
    개발
    정렬
    다이나믹 프로그래밍
    코딩테스트
    코테
    브루트포스 알고리즘
    백트래킹
    부트캠프
    네부캠
    자료 구조
    네이버
    멤버십
    수학
    문자열
    너비 우선 탐색
    최단 경로
    스택
    부스트캠프
    그리디 알고리즘
    java
    구현
    백준
    IT
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
raven
[JAVA-자바] 6064번: 카잉 달력
상단으로

티스토리툴바