728x90
반응형
10250번: ACM 호텔
프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수
www.acmicpc.net
이 문제는 높이 H, 폭 W으로 구성된 호텔에 N 번째 사람이 가장 가깝게 들어갈 호실을 구하는 문제입니다.
이 문제의 핵심은 엘레베이터를 타고 층수로 올라가는 거리를 따지지 않는다는 점입니다. 문제에서 102호 보다 2101호를 선호한다는 것에 힌트가 있습니다.
저는 해당 문제를 4가지 경우의 수를 세우고 문제에 접근하였습니다.
1. 높이 H가 N 명 보다 작은 경우
2. 높이 H가 N 명 보다 작고, N 이 H와 나누어 떨어지는 경우
3. 높이 H가 N 명과 같을 경우
4. 높이 H가 N 명보다 클 경우
다음은 제가 풀었던 코드입니다.
package main;
import java.util.*;
import java.io.*;
class Main {
public static void main(String[] args) throws Exception {
// 1. 입력
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
// 테스트 수 T
int T = Integer.parseInt(st.nextToken());
for (int i = 0; i < T; i++) {
st = new StringTokenizer(br.readLine());
//층 호수 yyxx
int y = 0;
int x = 1;
// 높이
int H = Integer.parseInt(st.nextToken());
// 넓이
int W = Integer.parseInt(st.nextToken());
// N 번째 사람
int N = Integer.parseInt(st.nextToken());
// 1. 높이 H 가 N 명 보다 적은 경우
if (H < N) {
y = N % H;
x += N / H;
//1-1) 높이 H 가 N 명이랑 나누어 떨어질 때..
if (y == 0) {
y = H;
x--;
}
}
//2. 높이 H 가 N 명과 같을 경우
if (H == N) {
y = H;
x = 1;
}
//3. 높이 H 가 N 명보다 클 경우
if (H > N) {
y = N;
x = 1;
}
//출력
println(x, y);
}
}
private static void println(int x, int y) {
String answer = "";
answer += String.valueOf(y);
if (x < 10) {
answer += ("0" + String.valueOf(x));
} else {
answer += String.valueOf(x);
}
System.out.println(answer);
}
}
728x90
반응형
'Algorithm' 카테고리의 다른 글
[백준 1018] 체스판 다시 칠하기 (1) | 2024.02.17 |
---|---|
백준 [27866] 문자와 문자열 - Java (1) | 2024.02.14 |
백준[11660] 구간 합 구하기 5 (0) | 2023.02.05 |
백준[11659] - 구간 합 구하기 4 (0) | 2022.12.30 |
백준[5585번] :: 거스름돈(Java11, 자바) (1) | 2021.02.02 |