백준 6064번 : 카잉달력(python)

2022. 1. 15. 21:55·Algorithm/백준

코드

def gcd(m,n):
    if(m>n):
        if(m%n!=0):
            return gcd(n,m%n)
        else:
            return n
    else:
        if(n%m!=0):
            return gcd(m,n%m)
        else:
            return m
def cal(m,n,x,y,c):
    a=x
    while (a<=c):
        if(a%n==y%n):
            return a
        a+=m
    return -1
num=int(input())
for i in range(num):
    m,n,x,y=map(int,input().split())
    max=gcd(m,n)
    c=m*n//max
    print(cal(m,n,x,y,c))

코드설명

m,n의 최소공배수까지 반복되다 최소공배수 다음숫자는 다시 원점으로 돌아가게된다.

유클리드 호세법으로 최소공배수를 구해줌으로 cal함수의 while문의 종료지점을 설정해준다.

x를 n으로 나눈것과 y를 n으로 나눈것이 같다면 카잉달력에 부합하는 값이 나오게된다.

느낀점 및 배운점

- 반복문의 가장 중요한 것은 종료지점 조건을 어떻게 설정해주냐인것같다.

- 처음에는 규칙으로 찾지 못해 헤메다, 직접 종이에 카잉달력을 써보면서 해결책을 얻었다. 머릿속으로만 생각하지말고, 직접 눈으로 봐가면서 푸는게 헷갈릴때는 더 좋은방법인거같다.

- 시간초과가 나면 그리 먼곳에 답이 있지않다. 반복문을 조금만 바꿔보자

728x90
저작자표시 (새창열림)

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

백준 1748번 : 수 이어 쓰기1(python)  (0) 2022.01.16
백준 14500번 : 테트로미노(python)  (0) 2022.01.10
백준 1107번 : 리모컨(python)  (0) 2021.12.27
백준 1476번 : 날짜 계산(python)  (0) 2021.12.24
백준 3085번 : 사탕 게임(python)  (0) 2021.12.24
'Algorithm/백준' 카테고리의 다른 글
  • 백준 1748번 : 수 이어 쓰기1(python)
  • 백준 14500번 : 테트로미노(python)
  • 백준 1107번 : 리모컨(python)
  • 백준 1476번 : 날짜 계산(python)
study ticket
study ticket
  • study ticket
    혼자하는 공부
    study ticket
  • 전체
    오늘
    어제
    • 개발 (77)
      • 오류 (1)
      • Spring (13)
      • Java (0)
      • Data structure (6)
      • Algorithm (49)
        • 백준 (17)
        • 프로그래머스 (2)
      • 문제풀면서 알게되는것들 끄적 (2)
      • 머신러닝 (4)
        • sklearn (3)
        • pandas (1)
      • 프로젝트 (0)
        • 핏두 (0)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    백준1157
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
study ticket
백준 6064번 : 카잉달력(python)
상단으로

티스토리툴바