반응형
문제 출처 :
https://www.acmicpc.net/problem/5176
알고리즘 분석 :
문제 해결에 필요한 사항
-
이 문제는 쉬운 문제이나, 숏 코딩을 통해 배울점이 많기에 작성 하고자 한다.
소스 코드 :
아래 코드는 필자가 코딩한 코드이다.
따로 배울점은 없는 것 같다. 일반적인 코딩이다.
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 | #include <stdio.h> int main() { int tCase; int n, nSeat; int seat[501]; int recv; int cnt = 0; scanf("%d", &tCase); for (int i = 0; i < tCase; i++) { scanf("%d %d", &n, &nSeat); for (int t1 = 0; t1 < nSeat; t1++) seat[t1] = 1; for (int k = 0; k < n; k++) { scanf("%d", &recv); if (seat[recv-1] > 0) seat[recv-1]--; else cnt++; } printf("%d\n", cnt); cnt = 0; } } // This source code Copyright belongs to Crocus // If you want to see more? click here >> | Crocus |
다음 코드는 백준 사이트의 newton08님의 소스코드이다.
( 공개 코드이기에 이용하였습니다. )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include<stdio.h> int main(){ int K; scanf("%d",&K); while(K--){ int P,M,f[501]={0,},i,s=0; scanf("%d%d",&P,&M); for(i=0;i<P;i++){ scanf("%d",&M); if(f[M])s++; else f[M]=1; } printf("%d\n",s); } } | Crocus |
일단 tCase를 K로 생각하여 while문의 while(0)이 되면 종료된다는 방법을 이용하였다.
그리고 필자는 seat라는 배열로 1로 초기화 후 누군가 앉으면 0으로 바꾸는 방식을 취했지만,
이 코드는 0으로 초기화 후 첫손님이 오면 1로 바꾸고 그뒤로 s를 증가시키는 방식을 취하였다.
알고리즘의 차이는 없지만, 코딩 능력에서 월등한 차이가 나는 것을 느낄 수 있다.
물론 숏코딩이 항상 좋다는 것은 아니지만, 이렇게 알고리즘을 접할 때 숏코딩을 연습해 보는 것도 좋을 것 같다.
반응형
'Applied > 알고리즘 문제풀이' 카테고리의 다른 글
[11653번] 소인수분해 (0) | 2016.09.18 |
---|---|
[10844번] 쉬운 계단 수(Dynamic Programming) (2) | 2016.09.18 |
[2355번] 시그마 (0) | 2016.09.05 |
[11944번] NN (0) | 2016.09.05 |
[9935번] 문자열 폭발 (0) | 2016.09.05 |