https://www.acmicpc.net/problem/10250


참고 블로그
[백준] 10250번 : ACM 호텔 - JAVA [자바]
https://www.acmicpc.net/problem/10250 10250번: ACM 호텔 문제 ACM 호텔 매니저 지우는 손님이 도착하는 대로 빈 방을 배정하고 있다. 고객 설문조사에 따르면 손님들은 호텔 정문으로부터 걸어서 가장 짧은
st-lab.tistory.com
항상 해답 블로그보면 허탈해진다ㅜ.....왜 이 생각을 못 했지....

호텔은 이렇게 H*W의 크기를 가지고 있다.
우리는 N번째 손님을 최대한 정문에 가깝게 배정하고자 한다.
위 처럼 H = 6 일때 7번째 손님은 102호에 배정받게 된다.
손님을 차례대로 행(가로)순으로 채우는 것이 아니라 열(세로)을 먼저 채운다.
1. Y (층) 구하기
Y = N % H;
우리는 세로로 먼저 채워야한다. H만큼 나누고 남은 나머지를 대입하면 된다.
1-1. N 과 H가 같아서 0이 된다면? => if 문으로 조건을 만들자
YXX 나 YYXX 형태이니 Y 결과값에 100을 곱해준다.
if( N % H == 0 )
{
Y = H * 100;
}
else
{
Y = (N % H) * 100;
}
2. X (엘리베이터에서부터 거리) 구하기
엘리베이터에서 XX1호의 방의 거리는 언제나 1이다. 그러니 +1을 해준다.
나머지가 0일 경우에는 몫이 곧 X이므로 1을 더해주지 않아도 된다.
if( N % H == 0 )
{
Y = H * 100;
X = N / H;
System.out.println(Y+X);
}
else
{
Y = (N % H) * 100;
X = (N/H) + 1;
System.out.println(Y+X);
}
최종 코드
import java.util.Scanner;
class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int X,Y;
int T = sc.nextInt();
for(int i=0; i<T; i++){
int H = sc.nextInt();
int W = sc.nextInt();
int N = sc.nextInt();
if( N % H == 0 ){
Y = H * 100;
X = N / H;
System.out.println(Y+X);
}
else{
Y = (N % H) * 100;
X = (N/H) + 1;
System.out.println(Y+X);
}
}
}
}
'Study > [Algorithm]' 카테고리의 다른 글
[백준] 2581번 - 소수 구하기 (0) | 2021.06.12 |
---|---|
[백준] 1316번 - 그룹 단어 체커 (0) | 2021.05.30 |
[백준] 2941번 - 크로아티아 알파벳 (0) | 2021.05.29 |
[백준] 1929번 - 소수 구하기 (0) | 2021.05.28 |
[백준] 1152번 JAVA - 단어의 개수 (0) | 2021.05.27 |
댓글