[백준]2609번 최대공약수와 최소공배수 c/c++

2022. 6. 25. 21:26·Algorithm/백준 & 프로그래머스
728x90
728x90

문제

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

나의 해결방법
이 문제를 처음봤을땐 우리가 수학으로 푸는 방식으로 자연수 두개가 같은값으로 나눠떨어지지 않을때까지 증가하는 i값으로 구해볼까? 했었는데

ex)

while(1)
if (n % i == 0 && m % i == 0) {
            n /= i;
            m /= i;
            max = max * i;
        } //최대공약수 구하기

이러한 방식으로 코드를 짜게 되면 나눠주는 값을 제대로 설정할 수 없었다.
그리고 while문을 빠져나가야할 조건을 생각해내지 못하였다.

 

유클리드 호제법으로 풀어야한다!

유클리드 알고리즘은 주어진 두 수 사이에 존재하는 최대공약수(GCD)를 구하는 알고리즘이다.

ex) 1112, 695의 최대공약수 구하기
1. 큰수를 작은 수로 나눈 나머지를 구한다. (mod연산을 한다)
1112 % 695 = 417
2. 나누었던 수와 나머지로 mod연산을 한다.
695 % 417 = 278
3. 과정을 계속 반복한다.
417 % 278 = 139
` 278 % 139 = 0'
--> 139가 최대공약수가 된다.

코드

#include<iostream>

using namespace std;

int gcd(int a, int b)
{
    int c= a % b;  
    while (c != 0) {
        a = b;
        b = c;
        c= a % b;
    }
    return b;
}


int main() {
    int p, q;
    cin >> p >> q;
    int g = gcd(p, q);
    cout << g << '\n';
    cout << (p * q) / g << '\n';  //최소공배수는 최대공약수 x 나머지가 0이될때까지 나눈 두 수
}
728x90
728x90

'Algorithm > 백준 & 프로그래머스' 카테고리의 다른 글

[백준]1292번 쉽게 푸는 문제 c/c++  (0) 2022.06.25
[백준]2693번 N번째 큰 수 c/c++  (0) 2022.06.25
[백준]1789번 수들의 합 c/c++  (0) 2022.06.25
[백준]3460번 이진수 c/c++  (0) 2022.06.25
[백준]2501번 약수구하기 c/c++  (0) 2022.06.25
'Algorithm/백준 & 프로그래머스' 카테고리의 다른 글
  • [백준]1292번 쉽게 푸는 문제 c/c++
  • [백준]2693번 N번째 큰 수 c/c++
  • [백준]1789번 수들의 합 c/c++
  • [백준]3460번 이진수 c/c++
성장하고픈개발자
성장하고픈개발자
방학 기념 개발블로그 작성하기
    반응형
  • 성장하고픈개발자
    꾸준히하자아자
    성장하고픈개발자
  • 전체
    오늘
    어제
    • 분류 전체보기 (63)
      • 프로젝트 (1)
        • 카카오 쇼핑하기 web (4)
        • 요약쏙 (0)
      • Algorithm (46)
        • 백준 & 프로그래머스 (40)
        • 알고리즘 (5)
        • 네트워크 (1)
      • Web (5)
        • Spring (4)
        • JPA (0)
        • HTTP (1)
      • 후기 (3)
      • SSAFY 일상 (4)
      • 취준 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 깃허브
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    회고
    백엔드
    Spring Data JPA
    책리뷰
    쉬운딥러닝
    DP
    testing
    코딩
    그리디
    싸피
    C++
    SpringBoot
    딥러닝
    싸피 13기
    PS
    스택
    정렬
    BOJ
    신경망기초
    FNN
    SSAFY
    알고리즘
    합격수기
    withmockuser
    네이버데이터센터각
    Andrew Ng
    web
    Spring
    백준
    일상
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.1
성장하고픈개발자
[백준]2609번 최대공약수와 최소공배수 c/c++
상단으로

티스토리툴바