Algorithm
[백준] 아~파트 아파트 31797번 (c++)
salmon16
2025. 1. 2. 13:55
출처 : https://www.acmicpc.net/problem/31797
풀이 방법
이 문제를 풀며 실제 아파트 게임과 다른 점은 중간에 빈 층도 있다는 것이다.
이 부분을 고려하지 못해 문제를 틀렸다.
증간에 빈 층을 처리해 주기 위해 hand [i] == 0인 경우 층수를 update 하지 않았다.
또한 참가자의 손 수는 M*2이므로 M*2보다 큰 경우 N % (M*2)를 해주면 된다. 만약 해당 값이 0이라면 마지막 층인 M*2로 구해주면 된다.
#include <iostream>
using namespace std;
int n, m;
int hand[10001];
int main() {
cin >> n >> m; // n = 층수, m = 참가자 수
int idx = n % (m * 2);
if (idx == 0) idx = m * 2;
int ans, a, b;
for (int i = 0;i < m;i++) {
cin >> a >> b;
hand[a] = i + 1;
hand[b] = i + 1;
}
int floor = 0;
for (int i = 1;i < 10001;i++) {
if (hand[i] != 0) {
floor++;
if (floor == idx) {
cout << hand[i];
}
}
}
return 0;
}