본문 바로가기

DEVELOP/Algorithm

[C] SW Expert Academy 문제풀이 :: 1926번

반응형


SW Expert Academy 문제풀이 1926번 간단한 369 게임. 간단한데 간단하지 않다. 그냥 if문을 이용해서 경우의 수를 다 나눠줬다.



문제


https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PTeo6AHUDFAUq&categoryId=AV5PTeo6AHUDFAUq&categoryType=CODE


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


2. "3" "6" "9"가 들어가 있는 수를 말하지 않는대신, 박수를 친다.

이 때, 박수는 해당 숫자가 들어간 개수만큼 쳐야 한 다.  

예를 들어 숫자 35의 경우 박수 한 번, 숫자 36의 경우 박수를 두번 쳐야 한다.



풀이


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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include <stdio.h>
 
int nChker(int num) {
    int chk = 0;
    if (num == 3 || num == 6 || num == 9) {
        chk = 1;
    }
    return chk;
}
 
int chChker(char chNum) {
    int chk = 0;
    if (chNum == '3' || chNum == '6' || chNum == '9') {
        chk = 1;
    }
    return chk;
}
 
int main() {
    int num;
    scanf("%d"&num);
 
    for (int i = 1; i <= num; i++) {
        if (i < 10) {
            if (nChker(i) == 1) {
                printf("- ");
            }
            else {
                printf("%d ", i);
            }
        }
        else if (i < 100) {
            char chn[3];
            sprintf(chn, "%d", i);
            if (chChker(chn[0]) == 1) {
                if (chChker(chn[1]) == 1) {
                    printf("-- ");
                }
                else {
                    printf("- ");
                }
            } else if (chChker(chn[1]) == 1) {
                printf("- ");
            }
            else {
                printf("%d ", i);
            }
        }
        else if (i < 1000) {
            char chn[4];
            sprintf(chn, "%d", i);
            if (chChker(chn[0]) == 1) {
                if (chChker(chn[1]) == 1) {
                    if (chChker(chn[2]) == 1) {
                        printf("--- ");
                    }
                    else {
                        printf("-- ");
                    }
                }
                else if (chChker(chn[2]) == 1) {
                    printf("-- ");
                }
                else {
                    printf("- ");
 
                }
            }
            else if (chChker(chn[1]) == 1) {
                if (chChker(chn[2]) == 1) {
                    printf("-- ");
                }
                else {
                    printf("- ");
                }
            }
            else if (chChker(chn[2]) == 1) {
                printf("- ");
            }
            else {
                printf("%d ", i);
            }
        }
        else {
            printf("%d", i);
        }
    }
    
    return 0;
}
cs


정수형의 3, 6, 9를 입력하는 함수와 문자형의 '3', '6', '9'를 판별하는 함수를 만들었다.


그리고 n이 1자리, 2자리, 3자리 수일 때로 각각 경우를 나눠줬다.


1자리는 정수형으로 369를 판별한다.


2자리 수 부터는 문자형으로 369를 판별한다.


맨 앞의 수가 369일 경우 그 다음 자리를 판별한다. 각각의 경우의 수에 대해 -, --, ---를 판별한다.


1000이 입력될 경우 그냥 1000을 그대로 출력한다.

반응형