문제출처: https://www.acmicpc.net/problem/5533


풀이

구현력이 코딩테스트에서 제일중요한데 이런문제를 오래고민하고있는 제가 너무답답하네요 ㅠㅠ 평소에 이런 구현 연습 많이 하세요..

생각이 코딩으로 이어지는게 참 어려운것같네요.


오래 고민한만큼 상세하게 주석을 달아놨습니다. 설명은 이거로 대체할게요~


코드

#include<iostream>
using namespace std;
int card[200][3];
int score[200];
int main()
{
	int n;
	cin >> n;
	for (int i = 0; i < n; i++)
		cin >> card[i][0] >> card[i][1] >> card[i][2];

	//총 3명이 연산하므로 
	for (int i = 0; i < 3; i++)
	{
		//3명이 각 점수에대해 n명과 비교
		//비교는 한명씩 탐색한다(버블정렬처럼)
		//총 3*n*n번 연산하게됨
		//j가 각 인원의 번호가됨.
		for (int j = 0; j < n; j++)
		{
			//현재 card[j][i]값과 같은게 있는지확인위해 check선언
			bool check_same = false;
			for (int k = 0; k < n; k++)
			{
				//본인은 비교에서 빼자(같은값이 있게되므로)
				if (j == k)continue;
				//같은값이있으면 탈출, 33행 안하므로 0값가짐
				if (card[j][i] == card[k][i])
				{
					check_same = true;
					break;
				}
			}
			//같지않다면 더해줌
			if (!check_same)
				score[j] += card[j][i];
		}
	}
	for (int i = 0; i < n; i++)
		cout << score[i] << endl;
}


결과


+ Recent posts