본문 바로가기
알고리즘/백준

백준 10250번 ACM 호텔 자바 java

by 클로드 2021. 4. 7.
반응형

문제

풀이

 

6층 12호 10번째 손님일 경우엔

101(1) -> 201(2) -> 301(3) -> 401(4) -> 501(5) -> 601(6) -> 102(7) -> 202(8) -> 302(9) -> 402(10)

순서대로 배정이 됨으로

2중 for문으로 순서를 계산하여 해결을 하였다

 

코드

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();
        int[] H = new int[T];
        int[] W = new int[T];
        int[] N = new int[T];

        for (int i = 0; i < T; i++) {
            H[i] = sc.nextInt();
            W[i] = sc.nextInt();
            N[i] = sc.nextInt();
        }

        for (int i = 0; i < T; i++) {
            //N 번째 방번호 찾기
            //호를 고정으로 하고 층만 올라감
            int count = 1;
            forout:
            for (int k = 1; k <= W[i]; k++) {
                for (int j = 1; j <= H[i]; j++) {
                    if (N[i] == count) {
                        System.out.printf("%d%02d\n", j, k);
                        break forout;
                    }
                    count++;
                }
            }
        }
    }
}

정상작동은 하지만 2중 for문을 탈출시키기 위한 loop label 코드가 별로 마음에 들지 않는다

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();
        int H;
        int W;
        int N;

        for (int i = 0; i < T; i++) {
            H = sc.nextInt();
            W = sc.nextInt();
            N = sc.nextInt();

            System.out.println(searchRoom(H, W, N));
        }
    }

    public static int searchRoom(int H, int W, int N) {
        int count = 1;

        for (int k = 1; k <= W; k++) {
            for (int j = 1; j <= H; j++) {
                if (N == count) {
                    return Integer.parseInt(String.format("%d%02d", j, k));
                }
                count++;
            }
        }

        return 0;
    }
}

2중 for문의 코드를 함수로 만들어서 loop label 대신 return으로 탈출 처리하였고

값을 입력받자 마자 처리하는 것으로 코드를 수정하였다

 

 

처음에는 2차원 배열을 만들어서 방 번호를 전부 계산하고 그다음 순서대로 찾는 것을 구현하려고 했는데
순서대로 찾는 걸 구현하다 보니 굳이 2차원배열 계산이 필요 없다는 걸 알아서 시간을 소비해버렸다

 

출처

www.acmicpc.net/problem/10250

 

반응형

댓글