난이도 : D2
문제번호 : 1926
※ 저의 풀이가 무조건적인 정답은 아닙니다.
다른 코드가 좀더 효율적이고 좋을 수 있습니다.
다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.
문제 주소 및 출처입니다.
목차
1. 문제 설명
2. 문제 해석
3. 소스 코드
1. 문제 설명
3 6 9 게임을 프로그램으로 제작중이다. 게임 규칙은 다음과 같다.
1. 숫자 1부터 순서대로 차례대로 말하되, “3” “6” “9” 가 들어가 있는 수는 말하지 않는다. 입력으로 정수 N 이 주어졌을 때, 1~N 까지의 숫자를 게임 규칙에 맞게 출력하는 프로그램을 작성하라. 박수를 치는 부분은 숫자 대신, 박수 횟수에 맞게 “-“ 를 출력한다. 여기서 주의해야 할 것은 박수 한 번 칠 때는 - 이며, 박수를 두 번 칠 때는 - - 가 아닌 -- 이다.
|
제약사항
N은 10이상 1,000이하의 정수이다. (10 ≤ N ≤ 1,000) |
입력
입력으로 정수 N 이 주어진다. |
출력
1 ~ N까지의 숫자를 게임 규칙에 맞게 출력한다. |
예시
입력 | 출력 |
10 | 1 2 - 4 5 - 7 8 - 10 |
2. 문제풀이
간단하게 생각해서 풀었습니다. 나머지와 나누기 연산자를 이용하여 각자리수를 분리하였고 자리수가 3으로 나누어떨어질때마다 -를 출력했습니다.
3으로 한번도 나누어 떨어지지 않았다면 숫자를 출력하고 계속 반복합니다. |
3. 소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#include <iostream>
#include <string>
using namespace std;
//D2 1926 간단한 369게임
int main(){
int a, t;
cin >> a;
//입력받은 횟수만큼 반복
for(int i=1; i<=a; i++){
t = i;
bool check = true;
//t가 0이될때까지 반복한다.
//3으로 나누어떨어질시 -출력
while(t){
if( t%10 && (t%10)%3 == 0){
cout <<"-";
check = false;
}
t /= 10;
}
//위에서 한번도 걸리지 않았다면 숫자를 출력한다.
if(check) cout << i ;
cout << " ";
}
return 0;
}
|
'코딩테스트 > SWExpertAcademy' 카테고리의 다른 글
어디에 단어가 들아갈 수 있을까 C++(SW Expert Academy) (0) | 2020.02.06 |
---|---|
파스칼삼각형 C++,Python(SW Expert Academy) (0) | 2020.02.05 |
조교의 성적 매기기 C++(SW Expert Academy) (0) | 2019.11.21 |
파리 퇴치 C++, Python(SW Expert Academy) (0) | 2019.11.21 |
백만장자 프로젝트 C++(SW Expert Academy) (0) | 2019.11.19 |
댓글