문제 자체는 간단한데 지문이 상당히 길어 헷갈리기 쉽다.
StreamWriter sw = new (new BufferedStream(Console.OpenStandardOutput()));
int t = int.Parse(Console.ReadLine()), y, x;
int[] hwn;
for (; t > 0; t--)
{
hwn = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
y = hwn[2] % hwn[0];
x = hwn[2] / hwn[0];
if (y == 0)
y = hwn[0];
else
x += 1;
sw.WriteLine(y * 100 + x);
}
sw.Close();
문제를 읽어보면 "102 호보다 2101 호를 더 선호한다" 라고 적혀있는데 이는 사진에서 방이 배정되는 방향이 오른쪽이 아닌 위쪽임을 의미한다.
위쪽으로 계속 배정되다 한 열이 모두 채워지면 다음 열로 넘어가는 식이다.
다르게 말하면 1호실이 모두 채워져야 2호실을 배정할 수 있다는 뜻이다.
위 과정이 머릿속에서 그려진다면 방 번호는 쉽게 구할 수 있다.
층수는 나머지 연산을 사용하면 된다. 단 나머지가 0이 될 때(꼭대기 층일 때)는 예외 처리를 해야 한다.
호수는 몫과 관련이 있는데, 정확히는 몫을 올림한 수와 같다. Math.Ceiling 메소드를 사용해도 되지만 정수 간의 연산으로도 충분히 표현할 수 있다.
그리고, 풀고 나서 깨달은 거지만 어째서인지 w를 전혀 사용하지 않고 있다...
아무래도 "배정이 불가능할 때"를 이 문제에서는 고려하지 않는 모양이다.
'백준 > 단계별' 카테고리의 다른 글
백준 11653 C#) 소인수분해 (0) | 2022.05.06 |
---|---|
백준 2839 C#) 설탕 배달 (0) | 2022.05.06 |
백준 2869 C#) 달팽이는 올라가고 싶다 (0) | 2022.05.04 |
백준 2292 C#) 벌집 (0) | 2022.04.27 |
백준 1316 C#) 그룹 단어 체커 (0) | 2022.04.27 |
댓글