728x90
1. 문제 설명
2. 풀이 과정
- 문제 해결의 흐름
- 아파트 층 수를 (참가자의 수 * 2)로 나눠주자! 참가자는 손이 두 개고 (참가자의 수 * 2)로 나눠준 나머지가 실질적인 아파트 층 수라고 봐도 무방하다.
- 만약 (참가자의 수 * 2)로 나눈 나머지가 0이라면 아파트 층 수는 (참가자의 수 * 2)이다.
- 반복문을 돌며 아파트 층 수번째 층에 있는 손바닥의 주인을 찾는다.
- 나의 코드
#include <iostream>
#define MAX 10001
using namespace std;
int arrApartment[MAX] = {}; // 0으로 초기화
int main() {
// 입력 받기
int N, M; // N : 아파트 층 수 , M : 참가자 수
cin >> N >> M;
for (int i = 1; i <= M; i++) {
int hand1, hand2;
cin >> hand1 >> hand2;
arrApartment[hand1] = i;
arrApartment[hand2] = i;
}
// 아파트 층 수가 참가자 수 2배를 넘길 경우 ? 아파트 층 수는 2*M으로 나눈 나머지이다.
// 만약 나머지가 0이라면 아파트 층 수는 2*M이다.
N %= (2*M);
if (N == 0) N = 2*M;
// 구현
int floor = 1;
for (int i = 1; i < MAX; i++) {
if (arrApartment[i] != 0) {
if (floor == N) {
cout << arrApartment[i];
break;
} else {
floor += 1;
}
}
}
return 0;
}
- 이 문제를 통해 얻어갈 수 있는 것들
- 실질적인 아파트 층 수를 구하는 것이 관건이었다!
3. 후기
실질적인 아파트 층 수를 구하는 것이 관건이었다!
'Algorithm > implementation' 카테고리의 다른 글
[백준] 31789 모험의 시작 C++ (0) | 2024.05.10 |
---|