본문 바로가기
프로그래밍/백준 알고리즘 코드

백준 10250 java ACM 호텔 [수학1]

by 졸린이 2020. 12. 7.
반응형

 

 

뭔가 내용이 길지만 찬찬히 읽으면 그렇게 복잡하진 않다.

h의 층과 w의 호수인 호텔에서 n번째 손님은 어느방에 들어갈 지 출력하면 된다.

조건을 보자면 먼저 엘레베이터와 가까운 방을 먼저 선호하고 그 다음엔 저층을 선호한다. (난 고층이 좋은데)

즉 101호 201호 301호 순으로 먼저 방에 들어가게 되고 102호는 201호 301호 401호 즉 1호보다 엘레베이터와 멀기 때문에 우선순위가 낮다. 먼저 1층부터 101호~H01호 먼저 다 채우고 102호~H02호 이렇게 채우면 된다.

간단하쥬?

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
import java.util.Scanner;
 
//baekjoon_10250_ACM호텔
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        
        int test = sc.nextInt();
        
        for(int i=0; i<test; i++) {
            int H, W, N;
            H = sc.nextInt(); //층 수
            W = sc.nextInt(); //방 호수
            N = sc.nextInt(); //n번째로 들어온 손님
                                //x는 호수 판별
            int x = (N/H) + 1;
            int y = N % H;
            
            if(y == 0) {
                x = N/H;
                y = H;
            }
            System.out.println(y*100+x);
        }
    }
}
cs

17행 : x는 몇 호 인지 계산한다. 예를 들어 한 층의 호수가 5개 있고 층 수는 3층인 건물이라 쳤을 때

5번째 손님은 101, 201, 301호로 1호는 다 차고 202, 302로 호 수는 2인 것을 확인할 수 있다.

즉 N / H로 (사람 수 / 층 수)(5 / 3) 사람이 한 호를 다 채우고 다음 호로 넘어간 것이 몫이 1을 의미한 것이므로 +1을 더해 주면 된다.

층 수보다 사람 수가 더 적으면 몫이 0이고 1호에 다 차므로 +1을 해주면 역시 수식이 맞게 된다.

 

18행 : y는 몇 층에 n번째 사람이 머무는지 확인하게 된다. 위에서 한 수식을 그대로 쓰면 된다.

N % H(사람 수 % 층 수) 5 % 3 = 2 나머지를 확인하면 층수를 확인 할 수 있다. (2층)

층과 호수를 알았으니 출력하면 된다. (24행)

 

음 결과적으로 W는 사용하지도 않았다... ㅎㅎ 그래도 뭐 결과만 나오면 그만이니

반응형

댓글