작성일 :

문제 링크

10864번 - 친구

설명

학생들 사이의 친구 관계가 주어졌을 때, 각 학생이 가진 친구의 수를 출력하는 문제입니다.

  • N명의 학생이 있으며, 각 학생은 1번부터 N번까지 번호가 매겨져 있습니다.
  • M개의 친구 관계가 주어지며, 각 관계는 서로 쌍방입니다. 즉, AB가 친구라면 BA의 친구입니다.


접근법

  • 크기가 N + 1인 정수 배열을 만들어 각 학생의 친구 수를 카운트합니다.
  • 친구 관계가 주어질 때마다 두 사람의 친구 수를 각각 1씩 증가시킵니다.
  • 마지막에 1번 학생부터 N번 학생까지 친구 수를 출력합니다.


문제의 조건에 따라 중복 관계자기 자신과의 관계는 주어지지 않기 때문에,

단순한 카운팅만으로 해결할 수 있습니다.

Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;

class Program {
  static void Main() {
    var parts = Console.ReadLine().Split();
    int n = int.Parse(parts[0]);
    int m = int.Parse(parts[1]);

    int[] friends = new int[n + 1];
    for (int i = 0; i < m; i++) {
      var line = Console.ReadLine().Split();
      int a = int.Parse(line[0]);
      int b = int.Parse(line[1]);

      friends[a]++;
      friends[b]++;
    }

    for (int i = 1; i <= n; i++)
      Console.WriteLine(friends[i]);
  }
}

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <bits/stdc++.h>
using namespace std;
typedef vector<int> vi;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int n, m; cin >> n >> m;

  vi friends(n + 1);
  while (m--) {
    int a, b; cin >> a >> b;
    friends[a]++;
    friends[b]++;
  }

  for (int i = 1; i <= n; i++)
    cout << friends[i] << "\n";

  return 0;
}