[SWEA] 1926 간단한 369게임 (C++)

우리누리·2023년 11월 14일
0

👓 문제 설명

3 6 9 게임을 프로그램으로 제작중이다. 게임 규칙은 다음과 같다.

1. 숫자 1부터 순서대로 차례대로 말하되, “3” “6” “9” 가 들어가 있는 수는 말하지 않는다.

1 2 3 4 5 6 7 8 9…

2. "3" "6" "9"가 들어가 있는 수를 말하지 않는대신, 박수를 친다. 이 때, 박수는 해당 숫자가 들어간 개수만큼 쳐야 한다. 예를 들어 숫자 35의 경우 박수 한 번, 숫자 36의 경우 박수를 두번 쳐야 한다.

입력으로 정수 N 이 주어졌을 때, 1~N 까지의 숫자를

게임 규칙에 맞게 출력하는 프로그램을 작성하라.

박수를 치는 부분은 숫자 대신, 박수 횟수에 맞게 “-“ 를 출력한다.

여기서 주의해야 할 것은 박수 한 번 칠 때는 - 이며, 박수를 두 번 칠 때는 - - 가 아닌 -- 이다.


💣 제한 사항

  • N은 10이상 1,000이하의 정수이다. (10 ≤ N ≤ 1,000)

🚨 접근 방법

to_string으로 1부터 n까지의 숫자를 string 배열에 저장한다.
이후 배열에 저장된 각 원소를 한 문자씩 탐색하여 3,6,9의 존재를 확인 후
그에 맞는 출력을 한다.


🚈 풀이

#include<iostream>
#include<string>
// int -> string : to_string
// string -> int : stoi
// char* -> int : atoi 
using namespace std;
 
int main(int argc, char** argv)
{
    int n;
    cin >> n;
    string arr[1001];
    for (int i = 1; i <= n; i++) {
        arr[i] = to_string(i);
        int cnt = 0;
        for (int j = 0; j < arr[i].size(); j++) {
            if (arr[i][j] == '3' || arr[i][j] == '6' || arr[i][j] == '9') {
                cnt++;
            }
        }
        if (cnt == 0) {
             
            cout << arr[i] << " ";
             
        }
        else {
            for (int k = 0; k < cnt; k++) {
                cout << "-";
            }
            cout << " ";
        }
    }
 
    return 0;
}

0개의 댓글