알고리즘/백준(BOJ) 문제풀이

[백준/BOJ] 64일 연속 문제 해결, 새싹 6단계 뱃지 획득

restudy 2022. 2. 22. 18:12
반응형

이 포스트에서는 프로그래밍 문제 사이트 백준 Online Judge(BOJ)에서 64일 연속으로 문제를 풀이하면 Solved.ac에서 주는 뱃지인 "새싹 6단계"를 받은 기념으로 리뷰해봅니다.

 

그 전에 오늘 푼 아주 쉬운 문제를 간단히만 리뷰하겠습니다.

 

 

1934번 : 최소공배수

 

1934번: 최소공배수

두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있

www.acmicpc.net

 

두 수 A, B에 대한 최소공배수를 구하는 문제입니다.

유클리드 호제법을 사용하면, 두 수의 GCD(최대공약수)를 짧은 시간에 빠르게 구할 수 있고 LCM = A/GCD * B/GCD * GCD = A*B/GCD로 구할 수 있습니다.

 

#include <bits/stdc++.h>
using namespace std;

int GCD(int a, int b) {
    if(a < b) swap(a, b);
    while(b != 0) {
        int temp = a%b;
        a = b;
        b = temp;
    }
    return a;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL), cout.tie(NULL);

    int T; cin >> T;
    while(T--) {
        int a, b; cin >> a >> b;
        cout << a*b/GCD(a, b) << "\n";
    }
}

 

위의 코드의 GCD 함수가 바로 유클리드 호제법으로 최대공약수를 구하는 코드이고, 결과적으로는 a*b/GCD(a, b)를 구해줌으로써 답을 얻을 수 있습니다.

 

 

 

풀이 코드를 제출하면 위와 같은 기록으로 통과할 수 있습니다.

 

 

 

이렇게 오늘까지 해서 64일 연속으로 백준 Online Judge에서 문제를 해결하였습니다.

다만 스트릭을 장착한 상태로 했기 때문에 이틀 정도 빠진 것은 유감으로 생각합니다.

 

 

결과적으로는 위와 같이 <새싹 6단계> 뱃지를 획득할 수 있었습니다.

 

이 뱃지가 의미있다고 생각하는 이유는, 제가 한창 약대 입시 준비를 할 때도 하루도 빠짐없이 습관을 유지하면서 풀었기 때문이고 여기에서 작은 보람을 느끼고 있습니다.

앞으로도 PS를 꾸준히 하도록 하겠습니다.

 

 

 

반응형