본문 바로가기

Study/BaekJoon

[백준 자바JAVA] 10250번 - ACM호텔

728x90

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


● 문제

처음 문제를 보는 순간 글씨가 많아 겁을 먹었지만 막상 읽어보면 단순한 문제라는것을 알 수 있다.

 

먼저 조건을 보자면

1. 엘리베이터로부터 가까운 방 우선 배정

2. 거리가 같은 경우 층수가 낮은 방 우선 배정

이다.

 

예를 들어 105호와 201호 방이 있을 경우 엘리베이터에서 더 가까운 201호를 선택하게 된다.

또한 105호와 205호가 방이 비어있을 경우 층수가 더 낮은 105호를 선택하게 된다.

 

이를 이용하여 순서대로 고객들을 배정해 준다면 원하는 고객의 호수를 구할 수 있다.


● 코드

import java.util.*;

public class Main {

	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		
		int count = s.nextInt();
		for(int i = 0; i < count; i++)
		{
			int H = s.nextInt();
			int W = s.nextInt();
			int N = s.nextInt();
			
			int number = 101;
			
			for(int j = 1; j < N; j++)
			{
				if(number > H * 100)
				{
					number = (number - H * 100) + 1;
				}
				number += 100;
				
			}
			
			System.out.println(number);
		}

	}

}

문제의 그림을 참고하여 W가 12 H가 6 이라면

먼저 기본 호수(101호)를 잡고 이를 100씩 더해간다.

 

이후 601호까지 고객이 찼을 경우 다시 1층으로 돌아가야 하므로 100의 자리 숫자를 비교하여 1층으로 다시 내려준 뒤 1을 더해주어 호수를 올려주었다.(102호)

 

이를 N번 비교하여 나온 값을 출력해주었다.

 

 


728x90