본문 바로가기
Study/[Algorithm]

[백준] 10250번 - ACM 호텔

by Nameless 2021. 6. 10.

 

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

 

 


 

참고 블로그 

https://st-lab.tistory.com/77

 

[백준] 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);
            }
        }   
    }
}

댓글