백준 온라인 코딩 문제풀이
Baekjoon Online Judge
Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.
www.acmicpc.net
코드 참고
wny0320 (박 상운)
Run code live in your browser. Write and run code in 50+ languages online with Replit, a powerful IDE, compiler, & interpreter.
replit.com
10250번에 대해 다룸
10250
using System;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
int tc = int.Parse(Console.ReadLine());
List<int> result = new List<int>();
for(int i = 0; i < tc; i++)
{
string[] Input = Console.ReadLine().Split();
int H = int.Parse(Input[0]);
int W = int.Parse(Input[1]);
int N = int.Parse(Input[2]);
int room;
int floor;
room = 1 + (N-1) / H;
floor = N % H;
if(floor == 0)
{
floor = H;
}
result.Add(floor * 100 + room);
}
for(int i = 0; i < tc; i++)
{
Console.WriteLine(result[i]);
}
}
}
room은 방의 뒷번호 YY, floor는 방의 앞 번호(층 수) XX를 의미함
room이 문제가 되던 것이 1+ N/H로 하여 손님이 들어온 번호 수가 층 수와 같다면 의도된 번호보다 크게 나옴
따라서 room 계산 값에 N-1로 바꿔주어 해결해 주었음
그리고 floor는 N % H지만 나머지가 없는 경우 나누어 떨어진 것이기 때문에 높이 H 와 같은 값을 주면 층 수를 알 수 있음
따라서 나온 값을 floor *100 + room 으로 리스트에 저장한 후 한번에 출력하였음
-문제 예시
첫 번째 손님은 101 호, 두 번째 손님은 201 호 등과 같이 배정한다. 그림 1 의 경우를 예로 들면, H = 6이므로 10 번째 손님은 402 호에 배정해야 함.
10번째 손님(N = 10)의 방번호는 (10%6)*100 + (1 + (10-1)/6) = 2로 402호가 나오게 되는 것
다른 예시로 식을 안고치고 N%H와 1+N/H로만 계산하게 된다면 12번째 손님은 (12%6)*100 + (1 + 12/6) = 3이 나옴.
앞의 식을 고치게 되면 12%6 == 0 이므로 6이 들어가게 됨
뒤의 식을 고치면 1 + (1 + (12-1)/6) = 2가 나와서 정답인 602호실이 나오게 됨
-1을 하지 않은 경우 603호실로 오답이 나올 수 있음
'BaekJoon' 카테고리의 다른 글
| 기본 수학 1단계 10757 (0) | 2022.10.21 |
|---|---|
| 기본 수학 1단계 2839 (0) | 2022.10.20 |
| 기본 수학 1단계 2869 (0) | 2022.10.10 |
| 기본 수학 1단계 2292 (0) | 2022.10.06 |
| 기본 수학 1단계 1712 (0) | 2022.10.05 |