[백준 32364] Hat Circle (C#, C++) - soo:bak
작성일 :
문제 링크
설명
원형으로 앉은 사람들 중 맞은편과 모자 번호가 같은 사람의 수를 구하는 문제입니다.
접근법
원형으로 앉았으므로 맞은편은 절반만큼 떨어진 위치에 있는 사람입니다.
따라서 앞쪽 절반만 순회하며 맞은편과 비교하고, 같으면 서로가 맞은편이므로 두 명을 함께 카운트합니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
class Program {
static void Main() {
var data = Console.In.ReadToEnd();
var parts = data.Split();
var idx = 0;
var n = int.Parse(parts[idx++]);
var h = new int[n];
for (var i = 0; i < n; i++)
h[i] = int.Parse(parts[idx++]);
var half = n / 2;
var cnt = 0;
for (var i = 0; i < half; i++) {
if (h[i] == h[i + half]) cnt += 2;
}
Console.WriteLine(cnt);
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <bits/stdc++.h>
using namespace std;
typedef vector<int> vi;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n; cin >> n;
vi h(n);
for (int i = 0; i < n; i++)
cin >> h[i];
int half = n / 2;
int cnt = 0;
for (int i = 0; i < half; i++) {
if (h[i] == h[i + half]) cnt += 2;
}
cout << cnt << "\n";
return 0;
}