이 문제는 딱 봤을 때 문제가 길어보이지만 로직은 어렵지 않은 문제다. 금방 해결할 수 있었다.

 

하지만 마지막에 출력을 위해 입력받은 int 값을 String으로 변환하기 위해서 String의 valueOf라는 메소드를 사용하였는데 여기서 문제가 있어서 자꾸 틀렸습니다라고 결과가 나왔다.

 

알고보니 내가 메소드를 잘못 사용한 것이었는데 처음엔 어디서 문제인지 몰라서 조금 헤맸다. 하지만 금방 해결할 수 있었다.


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int t = Integer.parseInt(st.nextToken());
        String[] arr = new String[t];
        int i = 0;
        int room = 0;
        int floor = 0;

        while(i < t) {
            st = new StringTokenizer(br.readLine());

            int h = Integer.parseInt(st.nextToken());
            int w = Integer.parseInt(st.nextToken());
            int n = Integer.parseInt(st.nextToken());
           
            if(n % h == 0) {
               room = n / h;
               floor = h * 100;
            }else {
               room = n / h + 1;
               floor = (n % h) * 100;
            }
            
            System.out.println(floor + room);

            i++;
        }

    }

}


나는 입장순서와 높이를 가지고 방 번호를 구했다. 여기서 100을 곱하지 않고도 room이 10보다 작은지 아닌지 조건문으로 한 자리 수 앞에 0 표기를 해결할 수도 있다. 하지만 조건문을 한 번 더 써야하는 게 더 복잡하다고 생각되어 100을 곱하는 것으로 바꾸었다.

 문제를 풀고 나서 아예 다르게 푼 분의 풀이를 보았다. 되게 신선한 방법이었다. 훨씬 코드도 짧고 간결했다. 큰 사이즈의 배열을 만들고 거기에 제일 가까운 순서대로 방번호를 넣어주고 찾는 방법이었는데 괜찮은 방법이었다. 역시 알고리즘 문제 풀 때는 여러 방식으로 풀 수 있는 것 같다.

+ Recent posts