728x90
문제
2차원 평면에 n 명의 사람이 있다. i 번 사람의 좌표는 두 자연수 yi, xi 로 표현되고, 같은 위치에 여러 사람이 존재할 수 있다. 1 번 사람부터 n 번 사람까지 순서대로 좌표가 주어진다. 각 좌표에 있는 사람의 번호의 합을 출력하여라.
단, 같은 위치에 두 명 이상의 사람이 있을 경우 가장 작은 번호만 더한다.
입력
첫 줄에 n 이 주어진다.
두 번째 줄부터 n 줄에 걸쳐 yi, xi 가 주어진다.
(1 ≤ n ≤ 100,000, 1 ≤ yi, xi ≤ 100)
출력
조건에 맞는 번호의 합을 출력한다.
입력의 예 1
6
1 1
2 3
2 2
1 3
1 1
4 5
출력의 예 1
16
입력의 예 2
5
1 1
1 1
1 1
2 2
3 3
출력의 예 2
10
입력의 예 3
5
1 1
1 2
1 3
1 1
2 2
출력의 예 3
11
입력의 예 4
6
1 1
1 1
1 1
2 2
3 3
3 3
출력의 예 4
10
앞선 중복조회1 문제와 같은 방식이고, 중복될 경우 가장 작은 번호만 더해야 한다.
따라서 board값이 0인경우에만 더하고, 그 이후에는 어차피 더 큰 번호일 경우이므로 더하지 않으면 된다.
#include <stdio.h>
const int MAX = 101;
int board[MAX][MAX];
int main(){
int k;
scanf("%d", &k);
int sum = 0;
for(int i = 1; i <= k; i++){
int a, b;
scanf("%d %d", &a, &b);
if (board[a][b] == 0){
sum += i;
board[a][b]++;
}
else{
board[a][b]++;
}
}
printf("%d", sum);
return 0;
}
728x90
'Coding Test(C++)' 카테고리의 다른 글
중복조회 1 (0) | 2022.04.11 |
---|---|
2차원 큰 이동 (0) | 2022.04.05 |
1차원 큰 이동 (0) | 2022.04.05 |