C# 백준 10250번 ACM 호텔 문제

김보근·2025년 5월 16일

백준

목록 보기
18/62

백준 10250번 ACM 호텔 문제

https://www.acmicpc.net/problem/10250

오늘은 백준 10250번 ACM 호텔 문제를 풀어봤다.

문제 조건은 호텔의 층 수(H), 각 층의 방 수(W), 손님 번호(N)가 주어지면, N번째 손님이 배정받게 될 방 번호를 출력하는 것이다.
방 번호는 YYXX 형식인데, YY는 층수, XX는 호수로 구성된다. 예를 들어 6층 12방짜리 호텔에서 10번째 손님이면 402호를 배정받는다.

처음엔 전체 방을 배열로 돌면서 N번째를 찾을까 했는데, 생각해보니 수학적으로 바로 계산할 수 있었다.

핵심은 다음과 같다:

층수 = N % H

호수 = N / H + 1

단, N % H == 0이면,

층수는 H,

호수는 N / H

이걸 코드로 바꾸면 이렇게 됐다

int floor = N % H;
int room = N / H + 1;

if (floor == 0)
{
    floor = H;
    room = N / H;
}

string roomNumber = $"{floor}{room.ToString("D2")}";

room.ToString("D2")를 써서 항상 두 자리 수로 포맷팅해주었다. (예: 3 → 03)

마지막엔 여러 테스트케이스를 한 번에 출력하기 위해 결과들을 리스트에 담아두고 한 번에 출력했다.

처음엔 뭔가 복잡하게 생각했는데, 수학적으로 패턴을 발견하니 훨씬 간단하게 풀렸다.

profile
게임개발자꿈나무

0개의 댓글