Hello It's good to be back ^_^

[코드트리 조별과제] 3주차 레포트 본문

Study/알고리즘

[코드트리 조별과제] 3주차 레포트

HongYeon 2024. 8. 25. 21:08

이번에 풀은 문제는 3 6 9 게임 문제이다. 내가 작성한 코드는 다음과 같다

#include <iostream>
using namespace std;

int haveMultiplesOf3(int n){
    int cnt = 0;
    while (n > 0){
        if (n % 10 == 3 || n % 10 == 6 || n % 10 == 9){
            cnt++;
            break;
        }
        n /= 10;
    }
    return cnt;
}

int isMultiplesOf3(int a, int b){
    int cnt = 0;
    for (int i = a; i <= b; i++){
        if (i % 3 == 0) cnt++;
        else cnt += haveMultiplesOf3(i);
    }
    return cnt;
}

int main() {
    // 여기에 코드를 작성해주세요.
    int cnt;

    //입력
    int a, b;
    cin >> a >> b;

    //연산
    cnt = isMultiplesOf3(a, b);

    //출력
    cout << cnt;

    return 0;
}

 

c++로 풀었다. 사실 계속 결과값이 00이 나와서 뭐가 문제인지 한참동안 고민했다. 하지만 아무리 봐도 문제가 없는 것 같아서 결국 gpt에게 물어봤다. 알고보니 c++에 익숙하지 않은 나머지 입력과 출력을 반대로 작성한 것이었다...다행히 코드자체를 구현하지 못한 것은 아니여서 쉽게 해결할 수 있었다.

 

구조를 설명하자면, 메인에서 숫자가 3의 배수인지 확인하는 함수를 호출한다. for문을 돌면서 숫자가 3의 배수이면 cnt를 증가시키고 아니라면 자릿수에 3의 배수가 있는지 확인하는 함수를 호출한다. 이 함수에서는 while문을 돌면서 각 자릿수에 3의 배수가 있는지 확인하고 만약 없다면 숫자를 10으로 나눈 몫으로 바꾸어 계속 while문을 돈다. n이 점차 작아지다가 0보다 작아지면 while문을 탈출한다.

'Study > 알고리즘' 카테고리의 다른 글

[코드트리 조별과제] 2주차 레포트  (0) 2024.08.18
[코드트리 조별과제] 1주차 레포트  (0) 2024.08.11