[Python] 1850 - 최대공약수 (실버1) : 유클리드 호제법

2022. 6. 25. 17:53·Coding Test/Solution
목차
  1. 유클리드 호제법

1. 문제 설명

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

 

1850번: 최대공약수

모든 자리가 1로만 이루어져있는 두 자연수 A와 B가 주어진다. 이때, A와 B의 최대 공약수를 구하는 프로그램을 작성하시오. 예를 들어, A가 111이고, B가 1111인 경우에 A와 B의 최대공약수는 1이고, A

www.acmicpc.net

사실 나도 잊고 있었던 풀이법인데 다시 보니까 기억났다.

이래서 사람이 복습을 해야 돼

 


2. 아이디어

가장 처음에 떠오르는 무식한 방법은 a와 b값을 입력받고,

진짜 1111(4), 111(3)의 값을 저장하여 연산과정을 거치는 방법일 것이다.

문제를 어느정도 풀어보면 알겠지만, 이 방법은 절대 통과가 안 될 거라는 것을 짐작할 수 있다.

(지금 생각해보니까 4로 3을 나누고 비트 연산으로 값을 만들었다면 되지 않았을까..? ㅋㅋ)

 

이 당시의 나는 최대 공약수를 구하는 모든 방법을 찾아보다,

가장 빠른 유클리드 호제법을 택했던 것으로 기억한다.

그렇다면 유클리드 호제법이란 무엇인가?

 


유클리드 호제법

뭔가 있어보이지만 그리 어려운 내용은 아니다. 알고리즘이라기 보단 수학적 사고를 필요로 한다.

x, y의 최대 공약수는 y, r의 최대 공약수와 같다는 법칙을 응용한 코드이다. (r은 x를 y로 나눈 나머지 값)

r이 0이 나왔을 때, y의 값이 곧 최대공약수가 된다.

x를 a, y를 b라고 생각해보면 a에는 처음부터 b의 값을 할당하고, b에는 r의 값인 a%b를 할당시킨다.

그렇게 b(사실상 r)가 0보다 클 때까지 돌린다면 최종적으로 a가 최대 공약수가 될 것이다. 


3. 코드

def solution():
    a, b = map(int, input().split())

    while (b > 0): # 유클리드 호제법
        a, b = b, a % b
    print('1'*a)

solution()
저작자표시 비영리 (새창열림)
  1. 유클리드 호제법
'Coding Test/Solution' 카테고리의 다른 글
  • [Python] 1790 - 수 이어 쓰기 (실버1)
  • [Python] 1058 - 친구 (실버3)
  • [Python] 1051 - 숫자 정사각형 (실버4)
  • [Python] 1018 - 체스판 다시 칠하기 (실버4)
나죽못고나강뿐
나죽못고나강뿐
싱클레어, 대부분의 사람들이 가는 길은 쉽고, 우리가 가는 길은 어려워요. 우리 함께 이 길을 가봅시다.
  • 나죽못고나강뿐
    코드를 찢다
    나죽못고나강뿐
  • 전체
    오늘
    어제
    • 분류 전체보기 (454)
      • Computer Science (60)
        • Git & Github (4)
        • Network (17)
        • Computer Structure & OS (13)
        • Software Engineering (5)
        • Database (9)
        • Security (5)
        • Concept (7)
      • Frontend (21)
        • React (13)
        • Android (4)
        • iOS (4)
      • Backend (77)
        • Spring Boot & JPA (50)
        • Django REST Framework (14)
        • MySQL (8)
        • Nginx (1)
        • FastAPI (4)
      • DevOps (24)
        • Docker & Kubernetes (11)
        • Naver Cloud Platform (1)
        • AWS (2)
        • Linux (6)
        • Jenkins (0)
        • GoCD (3)
      • Coding Test (112)
        • Solution (104)
        • Algorithm (7)
        • Data structure (0)
      • Reference (134)
        • Effective-Java (90)
        • Pragmatic Programmer (0)
        • CleanCode (11)
        • Clean Architecture (2)
        • Test-Driven Development (4)
        • Relational Data Modeling No.. (0)
        • Microservice Architecture (2)
        • 알고리즘 문제 해결 전략 (9)
        • Modern Java in Action (0)
        • Spring in Action (0)
        • DDD start (0)
        • Design Pattern (6)
        • 대규모 시스템 설계 (6)
        • JVM 밑바닥까지 파헤치기 (4)
      • Service Planning (2)
      • Side Project (5)
      • AI (0)
      • MATLAB & Math Concept & Pro.. (1)
      • Review (15)
      • Interview (1)
      • IT News (2)
  • 블로그 메뉴

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

    • 깃
  • 공지사항

    • 취업 전 계획 재조정
    • 취업 전까지 공부 계획
    • 앞으로의 일정에 대하여..
    • 22년 동계 방학 기간 포스팅 일정
    • 중간고사 기간 이후 포스팅 계획 (10.27~)
  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
나죽못고나강뿐
[Python] 1850 - 최대공약수 (실버1) : 유클리드 호제법

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.