Post

Baekjoon6064 - 카잉달력(Python)

백준 사이트 6064 - 카잉달력 문제입니다.

☑️ 1. 문제

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


☑️ 2. Input , Output


☑️ 3. 분류 및 난이도

코딩테스트 준비 - 브루트 포스 문제입니다.


☑️ 4. 생각한 것들

  • 당연하게도 1부터 연산하면 제 시간안에 못 풀거라 생각했습니다.
  • 반대로해도 되지만 x를 기준으로잡고 y를 M만큼 더해주고 N만큼 나눠준 나머지가 y자리에 올 값입니다.
  • 매 번 나눠줘도 되지만 나누지않고 더하고 나머지만 확인해도 풀 수는 있습니다.
  • 처음에 조건에 맞는 숫자가 들어올 수 있으므로 처음에도 분기문처리를 해주었습니다.

5. code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
def is_init(data):
    return True if data == 0 else False


T = int(input())
for i in range(T):
    M, N, x, y = map(int, input().split(" "))
    dict = {}
    init_x, init_y = 1, 1
    result = x
    init_x = x
    init_y = init_x % N
    if is_init(init_y):
        init_y = N
    while not (y == init_y):
        init_y = (init_y + M) % N
        if is_init(init_y):
            init_y = N
        if init_y in dict:
            result = -1
            break
        dict[init_y] = 1
        result += M
    print(result)




6. 후기

  • 3년 전엔 못 풀었는데 지금은 풀었다.

c++로 작성이 필요하거나 도움이 필요하시면 댓글을 작성해주세요.!! 기록용이라 설명이 자세하지 않습니다.

This post is licensed under CC BY 4.0 by the author.