문제 출처:
https://www.acmicpc.net/problem/5533
이 문제와 관련해서 간단하게 생각할 수 있다.
다음은 보기로 주어진 예제의 과정을 설명하자면...
플레이어 1 : 0 + 0 + 0 = 0
플레이어 2 : 0 + 0 + 92 = 92
플레이어 3 : 63 + 89 + 63 = 215
플레이어 4 : 99 + 0 + 99 = 198
플레이어 5 : 89 + 0 + 0 = 89
다음과 같이 진행되었다고 말할 수 있다.
이와 관련해서 코드를 간단히 짜봤다.
물론 c++에 대한 지식이 부족하여 이것저것 찾다가 이렇게 사용할 수 있다는 것을 깨달았다.
//P_5533
#include <iostream>
#include <vector>
using namespace std;
void check_num(vector <int> *l){
int overlap = -1 ;
for (vector<int>::iterator iter = l->begin() ; iter != l->end(); ++iter){
for (vector<int>::iterator curr = iter + 1 ; curr != l->end(); ++curr){
if(overlap == -1 && *iter == 0)
break ;
else if(overlap == -1 && *curr == 0)
continue ;
else if(overlap == -1 && *iter == *curr){
*curr = 0 ;
overlap = *iter ;
*iter = 0 ;
}
else if(overlap == *curr){
*curr = 0 ;
}
}
overlap = -1 ;
}
}
int main(int argc, const char * argv[]) {
ios::sync_with_stdio();
cin.tie(NULL);
cout.tie(NULL);
//player(2 ≤ N ≤ 200)
unsigned short N = 0;
cin >> N ;
vector <vector <int> > num(3) ;
int temp[3] ;
for(int i = 0 ; i < N ; i++){
cin >> temp[0] >> temp [1] >> temp[2] ;
for(int j = 0; j < 3; j ++)
num[j].push_back(temp[j]);
}
for(int i = 0; i < 3; i ++)
check_num(&num[i]);
for(int i = 0 ; i < N ; i++){
printf("%d\n", num[0][i] + num[1][i] + num[2][i]);
}
return 0;
}
처음에는 해당부분에서 값이 바뀌어도 출력값이 바뀌질 않았다.
그래서 함수의 매개변수를 포인트 (*) 로 주정해주었다.
해당 내용은 Github에서도 보실 수 있습니다
https://github.com/gurcks8989/CodingTest/blob/master/BackJoon/HPS/P5533_Unique.cpp
훈수 및 조언은 언제든지 환영입니다.