본문 바로가기

boj

백준 6064 카잉 달력

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

 

6064번: 카잉 달력

입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 한 줄로 구성된다.

www.acmicpc.net

살짝 어려웠다.

 

x의 값을 고정시켜놓는다는 아이디어가 중요하다.

 

x는 m%x이므로, x에 아무리 m을 더해도 x값은 같다.

 

x에 m을 계속 더하면서, x%n이 y%n(0일경우도대비)이 되는 x값을 구한다.

 

만일 x가 m*n보다 커진다면, 이는 무한루프이므로 -1을 출력한다.

 

##처음코드##

for _ in range(int(input())):

    m,n,x,y=map(int,input().split())

    pivot=x%m
    if pivot==0:pivot=m

    tmp=pivot
    while True:
        a=tmp%n
        if not a: a=n

        if a==y:
            print(tmp)
            break

        tmp+=m
        if tmp>(m*n):
            print(-1)
            break

##함수사용 깔끔 코드##

def kain(m,n,x,y):
    while x<m*n:
        if x%n==y%n :
            print(x)
            return
        x+=m

    print(-1)
    return
  

for _ in range(int(input())):

    m,n,x,y=map(int,input().split())
    kain( m,n,x,y)

난웰케 머리가 나쁠까

'boj' 카테고리의 다른 글

백준 15666 N과 M (12)  (0) 2022.04.06
백준 15652 N과 M (4)  (0) 2022.04.06
백준 1260 DFS와BFS  (0) 2022.04.04
백준 2565 전깃줄  (0) 2022.04.04
백준 11170 0의 개수  (0) 2022.04.03