반응형

문제 출처 :

 

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