https://www.acmicpc.net/problem/1713
한줄 후기: 이것도 초등부 1번문제 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ^,^ 짜증나
멍청하게 자꾸 다 해놓고 조건 하나 잘못 코딩해서 네번만에 성공 ^^
#include <stdio.h>
typedef struct{
int cnt;
int order;
int candidate;
}CAND;
CAND can[22]={0};
int check[101] = {0};
int add(int p, int j);
int new_add(int p);
int che=1, n, num;
int main(){
int i, p;
scanf("%d %d", &n, &num);
for(i=1; i<=num; i++){
scanf("%d", &p);
if(check[p]) new_add(p);
else{
add(p,i);
}
}
for(i=1; i<=100; i++){
if(check[i]) printf("%d ", i);
}
}
int add(int p, int j){
int min, i, temp=1, min2;
if(che <= n){
che++;
for(i=1; i<=n; i++){
if(can[i].candidate == 0){
can[i].candidate = p;
can[i].cnt++;
can[i].order = j;
check[p] = 1;
break;
}
}
}
else{
min = can[1].cnt;
min2 = can[1].order;
for(i=2; i<=n; i++){
if(min > can[i].cnt){
temp = i;
min2 = can[i].order;
min = can[i].cnt;
}
else if(min == can[i].cnt){
if(can[i].order < min2){
temp = i;
min2 = can[i].order;
}
}
}
check[can[temp].candidate] = 0;
can[temp].candidate = p;
can[temp].order = j;
can[temp].cnt = 1;
check[p] = 1;
}
return;
}
int new_add(int p){
int i;
for(i=1; i<=n; i++){
if(can[i].candidate == p) {
can[i].cnt++;
return;
}
}
}
사진틀이 꽉 찼을 때 추천횟수 적은 거 찾기까지 잘 했는데 추천횟수가 같을 때 더 오래된 사진을 찾고 ㅠ 바로 갱신해버려서 틀렸다. 바로 갱신이 아니라 혹시나 그 사진보다 더 뒤에 있는 사진틀에서 추천횟수가 더 작은 사진이 있을 수도 있다.
혹여나 이것을 본다면,, 나처럼 바보같은 짓은 하지 않도록,,,
'DEV > PS' 카테고리의 다른 글
[15953] 상금 헌터, C (0) | 2019.07.15 |
---|---|
[13163] 닉네임에 갓 붙이기, C (0) | 2019.07.15 |
[15904] UCPC는 무엇의 약자일까? , C (0) | 2019.07.05 |
[2841] 외계인의 기타연주, C (0) | 2019.07.04 |
[12790] Mini Fantasy War, C (0) | 2019.07.03 |