https://www.acmicpc.net/problem/10250
프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수를 포함하고 있으며 각각 호텔의 층 수, 각 층의 방 수, 몇 번째 손님인지를 나타낸다(1 ≤ H, W ≤ 99, 1 ≤ N ≤ H × W).
프로그램은 표준 출력에 출력한다. 각 테스트 데이터마다 정확히 한 행을 출력하는데, 내용은 N 번째 손님에게 배정되어야 하는 방 번호를 출력한다.
import java.util.Scanner;
public class pr10250 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int T = s.nextInt();
int num = 0;
while (true) {
num++;
int H = s.nextInt();
int W = s.nextInt();
int N = s.nextInt();
if (N % H == 0) {
int room_num = 100 * H + (N / H);
System.out.println(room_num);
} else {
int room_num = 100 * (N % H) + (N / H + 1);
System.out.println(room_num);
}
if (num == T) break;
}
}
}
H와 N사이의 관계만 해석한다면 빠르게 풀 수 있다.
각 방의 호수는 N을 H로 나누었을때의 몫과 나머지의 관계에서 볼 수 있다. 문제에서 주어진 H = 6 , W = 12, N= 10 인 경우에 402호를 선택한다고 하였다. 10/6=1...4 이므로 층수는 나머지이고 호수는 (몫+1)값임을 알 수 있다.
이때 나머지가 0인 경우를 조심해야하는데 층수는 H이고 호수는 N/H이다.
조건이 많아서 복잡한 문제라고 생각하고(사실은 서론이 긴건데,,) 열심히 삽질했다. H와 W가 주어졌을때 배열을 만들어서 index 사이의 관계를 보는 방법, 호수 사이의 관계성, 전치행렬로 푸는 방법 등 ,,좀 더 쉽게쉽게 생각하는 것을 연습할 필요가 있어 보인다. o(TヘTo)
그리고 왜 자꾸 혼자 예시로 푼 코드를 백준 채점으로 넘기는,,,짓을,, 그만!!!