코딩/알고리즘문제
[JAVA] 백준 10250번 : ACM 호텔 문제 풀이
ABlue
2021. 1. 6. 23:43
10250번: ACM 호텔
프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수
www.acmicpc.net
코드는 다음과 같다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
ArrayList<Integer> input = new ArrayList<Integer>();
BufferedReader br = new BufferedReader((new InputStreamReader(System.in)));
int T = Integer.parseInt(br.readLine());
for(int i = 0; i < T; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int H = Integer.parseInt(st.nextToken());
Integer.parseInt(st.nextToken());
int N = Integer.parseInt(st.nextToken());
input.add(H);
input.add(N);
}
for(int i = 0; i < input.size();) {
int H = input.get(i++);
int N = input.get(i++);
int Y = 0, X = 1;
for(int j = 0; j < N; j++) {
Y++;
if(H < Y) {
Y = 1;
X++;
}
}
System.out.println(Y * 100 + X);
}
}
}
먼저 BufferReader를 통해 H,W,N 값을 받아오는데 여기서 중요한 것은 W값은 굳이 받아올 필요가 없다.
왜냐하면 쓸데없는 데이터이기 때문이다. 어차피 H개의 층수와 각 층 마다 w개의 방이 정해져있으면 H x W 의 값보다 더 높은 N의 값은 고려하지 않기 때문이다. 즉 5개의 층수와 각 층마다 5개의 방이 있다치면 N은 25보다 더 높은 값이 입력으로 들어가는 경우는 고려하지 않는다는 뜻이므로 굳이 각 층마다 w개인지는 알 필요가 없다.
그래서 제 코드를 보시면 W값 자체는 저장하는 코드는 없다.
즉 H와 N의 수만 저장을 하고 YYXX호에서 YY를 정하는 변수 Y와 XX를 정하는 변수 X만 정해주면 이 문제는 쉽게 해결할 수 있을 것이다.