1926. to_string()
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)
[입력]
입력으로 정수 N 이 주어진다.
[출력]
1 ~ N까지의 숫자를 게임 규칙에 맞게 출력한다.
[풀이]
정수의 각 자릿수를 추출하여 처리해야 하는 문제는 string 으로 변환하여 처리하면 편하다.
위 문제에서 해당 정수형 숫자를 문자열로 변환하면 3,6,9가 포함되어있는지 쉽게 확인할 수 있다.
#include <bits/stdc++.h>
using namespace std;
int main(){
int n; cin >> n;
for(int i=1; i<=n; i++){
int cnt = 0;
string str = to_string(i);
for (int j=0; j<str.size(); j++) if (str[j]=='3' || str[j]=='6' || str[j]=='9') cnt++;
if (cnt) for(int j=0; j<cnt; j++) cout << '-';
else cout << i;
cout << ' ';
}
}
'PS' 카테고리의 다른 글
BOJ - 1463. 1로 만들기 (C++) (0) | 2024.08.04 |
---|---|
BOJ - 1929. 소수 구하기 (C++) (0) | 2024.06.02 |
BOJ - 10814. 나이순 정렬 (C++) (0) | 2024.04.19 |
완전탐색 연습문제 (C++) (0) | 2024.03.30 |
BOJ - 1260. DFS와 BFS (C++) (0) | 2024.03.19 |