문제
알고리즘 고민
n번째로 도착한 손님이 몇층 몇호에서 머무는지에 대한 문제이다. 먼저 1호실부터 다 채운 후 2호실, 3호실 순서로 진행된다.
손님이 머무를 층수를 구하기 위해서는 앞에서부터 H 명씩 차기때문에 N에서 H씩 빼주다 H보다 작아질때의 값을 구하면 된다. 따라서, N%H를 하게되면 앞의 1호실 부터 순차적으로 차고 남은 방의 m층의 위치가 나오게되는데 N%H == 0 일때를 고려해서 예외로 꼭대기 층은 H로 고정시켜줘야한다.
다음으로 호수를 구해야하는데 층수를 구할때와 마찬가지로 N에서 H씩 빼주는 과정을 거치면 되는데 이때 층수와는 다르게 나머지 값이 아닌 몇번 수를 몇차례 빼줬는지에 대한 변수이기 때문에 N/H를 구하면된다. 이때도 마찬가지로 N%H != 0 일때는 남은 사람수가 있다는 뜻이기 때문에 1호를 더 추가해줘야한다.
마지막으로 출력할때 층수의 경우 그냥 출력하면 되지만 호실의 경우 1자리수 일때 앞에 0을 붙여 출력해야하기 때문에 print가 아닌 printf를 이용해서 출력하였다.
JAVA Code
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
while (T-- > 0) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int H = Integer.parseInt(st.nextToken());
int W = Integer.parseInt(st.nextToken());
int N = Integer.parseInt(st.nextToken());
int floor = N % H == 0 ? H : N % H;
int roomNum = N % H == 0 ? N / H : N / H + 1;
System.out.printf("%d%02d\n", floor, roomNum);
}
}
}
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ] 2839번 : 설탕 배달 (JAVA/자바) (0) | 2022.03.11 |
---|---|
[BOJ] 2775번 : 부녀회장이 될테야 (JAVA/자바) (0) | 2022.03.11 |
[BOJ] 2869번 : 달팽이는 올라가고 싶다 (JAVA/자바) (0) | 2022.03.10 |
[BOJ] 1193번 : 분수찾기 (JAVA/자바) (0) | 2022.03.10 |
[BOJ] 2292번 : 벌집 (JAVA/자바) (0) | 2022.03.10 |