출처 : 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;
}
'Algorithm' 카테고리의 다른 글
[백준] 수 이어 쓰기 2 1790번 (c++) (0) | 2025.01.04 |
---|---|
[프로그래머스] 표현 가능한 이진트리 (c++) (0) | 2025.01.02 |
[백준] 백조의 호수 3197번 (c++) (0) | 2025.01.01 |
[백준] 구간 합 구하기 2042번 (c++) 세그먼트트리 (0) | 2025.01.01 |
[프로그래머스] 미로 탈출 명령어 (c++) (1) | 2024.12.31 |