728x90
문제 링크 : https://www.acmicpc.net/problem/10250
백준 브론즈 3 문제 입니다.
내 코드
int _num = int.Parse(Console.ReadLine());
for (int i = 0; i < _num; i++)
{
int[] _split = Console.ReadLine().Split().Select(x => int.Parse(x)).ToArray();
int roomX = ((_split[2] + _split[0]) % _split[0]) == 0 ? _split[0] : ((_split[2] + _split[0]) % _split[0]);
int roomY = (int)Math.Ceiling(_split[2] / (float)_split[0]);
Console.WriteLine("{0:#}{1:0#}", roomX, roomY);
}
코드 풀이 해석 내용
int _num = int.Parse(Console.ReadLine());
입력한 값을 정수로 변환하여 _num에 저장합니다.
나중에 이 값은 반복문의 횟수를 나타냅니다.
for (int i = 0; i < _num; i++)
_num의 값만큼 반복하는 루트를 시작합니다.
int[] _split = Console.ReadLine().Split().Select(x => int.Parse(x)).ToArray();
입력받은 한 줄의 문자열을 공백을 기준으로 나눕니다.
각 부분을 정수로 변환하고 배열 _split에 저장합니다.
_split[0]은 방의 열 수 (가로)를, _split[1]은 방의 행 수 (세로)를, _split[2]는 손님 수를 나타냅니다.
int roomX = ((_split[2] + _split[0]) % _split[0]) == 0 ? _split[0] : ((_split[2] + _split[0]) % _split[0]);
손님 수와 방의 열 수를 이용하여 X축 방 번호를 계산합니다.
방 번호는 손님 수를 열 수로 나눈 나머지입니다.
나머지가 0이면 마지막이라는 뜻이므로 _split[0]을 사용했습니다.
int roomY = (int)Math.Ceiling(_split[2] / (float)_split[0]);
손님 수를 열 수로 나눈 후 올림하여 Y축 방 번호를 계산합니다.
손님 수가 몇 개의 열을 차지하는지를 나타내고 있습니다.
Console.WriteLine("{0:#}{1:0#}", roomX, roomY);
결과를 출력합니다.
{0 : #}는 X축 방 번호를 출력합니다.
{1:0#}는 Y축 방 번호를 출력합니다.
실행 결과
728x90
'C#' 카테고리의 다른 글
백준 C# 8958 문제 풀이 (0) | 2024.09.15 |
---|---|
백준 C# 2920 문제 풀이 (0) | 2024.09.15 |
백준 C# 2231 문제 풀이 (0) | 2024.09.13 |
백준 C# 31403 문제 풀이 (0) | 2024.09.13 |
백준 C# 2587 문제 풀이 (0) | 2024.09.13 |