728x90
https://www.acmicpc.net/problem/10250
문제 분석
조건
1. 엘베는 가장 왼쪽에 존재
2. 인접한 방의 거리는 1
3. 한쪽면에만 방이 존재
(1,2,3 조건으로 일반 2차원 좌표계 사용가능)
4. 방번호의 표현 -> Y:층수, X:해당층 엘베부터 거리(항상 두자리 형태로 표현) -> YXX:Y가 앞에 써줌
예를 들어, W=12, H=6이면 방의 번호는 101~612까지 존재함((1,1)~(12,6))
5. 엘베 이동은 이동거리로 포함x
6. 아래층을 우선순위로 둠
입력:H W N으로 층 수, 층별 방 수, N번째 고객
출력:N번째 고객의 방 번호
예시 경우(6x12)
101 201 301...601 102... 612
문제풀이
- 아래에서 위로 왼쪽부터 채워지기 때문에 층 수로 고객의 번호를 나눠주는 식 사용
- 삼항연산자를 사용하여 딱 나눠지는 경우와 그렇지 않은 경우 각각 케이스 분류
- 가장 위층과 마지막층을 계산한다고 할때 가장 위층이 높이(H)로 나누어 떨어지기에 구분 필요
예외처리
- 가장 H층과 1층을 식으로 나타낼 경우 중간 층과 다른 예외처리가 필요
#include <iostream>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int T;
cin >> T;//테스트 케이스 일회용
while (T--) {
int W, H, N, answer;//W:층별 방의 수, H:총 층수, N:고객 입실 순서
cin >> H >> W >> N;
answer = (N % H == 0 ? H : N % H) * 100 + (N % H == 0 ? N / H : N / H + 1);
cout << answer << '\n';
}
return 0;
}
728x90
'🥇Baekjoon Solutions > ICPC기출' 카테고리의 다른 글
[C++] 백준 17520번: Balanced String(ICPC 기출) (0) | 2021.09.28 |
---|---|
[C++] 백준 13333번: Q-인덱스(ICPC 기출) (0) | 2021.09.28 |
[C++] 백준 16283번: Farm(ICPC 기출) (0) | 2021.09.28 |
[C++] 백준 10251번: 운전 면허 시험(ICPC 기출) (0) | 2021.09.05 |
댓글