[SWEA/C++] 1926. 간단한 369게임

soobee·2024년 5월 16일

엄청난 삽질을 했던 문제다.

#include <iostream>
#include <string>
using namespace std;

int main()
{
    int N;
    cin >> N;

    for (int i = 1; i <= N; i++)
    {
        // 1~10까지 중 각각의 수
        string num = to_string(i);

        for (int k = 0; k < num.length(); k++)
        {
            if (num[k] != '0' && num[k] % 3 == 0)
            {
                cout << "-";
            }
            else
            {
                cout << num[k];
            }
        }
        if(i != N){
            cout << " ";
        }
        
    }
    return 0;
}

첨에 이렇게 풀었는데 멀쩡하게 잘 나오길래 무려 5번을 더 제출해봤다..
이것저것 바꿔서..
근데 알고보니 문제를 제대로 안읽은 거심...

356 -> --
이렇게 출력해야하는데

바보같이
356-> -5-
이렇게 출력해버림 ... 흙흑

문제에 댓글 달린 거 읽다가 나같은 분이 적어주신 거보고 이거였네...하고 으이구으이구 하면서
바로 수정했다.

#include <iostream>
#include <string>
using namespace std;

int main()
{
    int N;
    cin >> N;

    for (int i = 1; i <= N; i++)
    {
        // 1~10까지 중 각각의 수
        string num = to_string(i);
        int cnt = 0;

        for (int k = 0; k < num.length(); k++)
        {   
            // 3의 배수가 있을 cnt 추가
            if (num[k] != '0' && num[k] % 3 == 0)
            {
                cnt++;
            }
        }
        

        if(cnt == 0){
            cout << i;
        } else {
            for(int i=0; i<cnt; i++){
                cout << "-";
            }
        }

        if(i != N){
            cout << " ";
        }
        
    }
    return 0;
}

이게 정답인 코드!

앞으로 문제를 제발 잘 읽자!!

profile
까먹지않기..저장저장.📝

0개의 댓글