이 문제는 간단히 하면....
0 2 1 8 5 6 8 7 4 5 3 2 5 7 4 9 5 4 2 6 5 8
요런게 있으면 0부터 9까지 개수가 몇 개가 있냐!!!와 거의거의 흡사한 문제이다.
문자열 하나 입력 받을 때마다 해당 번호의 개수를 저장하는 변수를 +1씩 해주고, 출력할 때 해단 변수만큼 해당 문자열을 출력해주면 된다!!!!
이건 나름 속도 빠르게 나와서 기분 좋아...ㅎㅎ
12ms~거의 상위권인듯
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 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | #include <stdio.h> #include <string.h> int count[10] = { 0 }; void OUT(int num) { switch (num) { case 0: printf("ZRO "); break; case 1: printf("ONE "); break; case 2: printf("TWO "); break; case 3: printf("THR "); break; case 4: printf("FOR "); break; case 5: printf("FIV "); break; case 6: printf("SIX "); break; case 7: printf("SVN "); break; case 8: printf("EGT "); break; case 9: printf("NIN "); break; default: break; } } void IN(char * arr) { switch (arr[0]) { case 'Z': count[0]++; break; case 'O': count[1]++; break; case 'T': { if (arr[1] == 'W') count[2]++; else count[3]++; break; } case 'F': { if (arr[1] == 'O') count[4]++; else count[5]++; break; } case 'S': { if (arr[1] == 'I') count[6]++; else count[7]++; break; } case 'E': count[8]++; break; case 'N': count[9]++; break; default: break; } } int main() { int Test; scanf("%d",&Test); for (int i = 1; i <= Test; i++) { int num; char arr[4]; memset(count,0,sizeof(count)); scanf("%s %d",arr, &num); for (int j = 0; j < num; j++) { scanf("%s", arr); IN(arr); } printf("#%d\n", i); for (int a = 0; a <= 9; a++) { for (int b = 0; b < count[a]; b++) { OUT(a); } } } return 0; } | cs |
'SW 업무 관련 > SW Expert Academy' 카테고리의 다른 글
1859. 백만 장자 프로젝트 (0) | 2018.08.08 |
---|---|
1952. [모의 SW 역량테스트] 수영장 (0) | 2018.08.05 |
1289. 원재의 메모리 복구하기 (0) | 2018.08.02 |
1220. [S/W 문제해결 기본] 5일차 - Magnetic (0) | 2018.07.31 |
1216. [S/W 문제해결 기본] 3일차 - 회문2 (0) | 2018.07.28 |