HwangHub

[완전탐색/자바] 코드트리 IL. 컨베이어 벨트 본문

workspace/알고리즘

[완전탐색/자바] 코드트리 IL. 컨베이어 벨트

HwangJerry 2023. 10. 1. 15:39
 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

문제 해석

위 문제는 완탐 시뮬레이션 문제로 이해할 수 있다. 사실 이 문제는 로직 구성은 간단한데 문제를 잘 읽어야 한다는 게 포인트인 것 같다. 숫자들이 두 줄의 컨베이어 벨트 위에 있는 것으로 정의되는데, 아래 줄 숫자들은 반전되어 보여진다는 게 일종의 장애물 포인트이다. 이를 고려하지 않고 ver1.0의 로직을 구성해서, 그 이후에 적용할 때에는 기존 입력이나 출력을 뒤집어서 수행하여 기존 로직을 사용할 수 있도록 하였다.

 

문제 풀이

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

public class 컨베이어벨트 {
    private static int n, t;
    private static int[][] arr;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        n = Integer.parseInt(st.nextToken());
        t = Integer.parseInt(st.nextToken());
        arr = new int[2][n];

        for (int i = 0; i < 2; i++) {
            st = new StringTokenizer(br.readLine());
            if (i == 0) {
                for (int j = 0; j < n; j++) {
                    arr[i][j] = Integer.parseInt(st.nextToken());
                }
            } else if (i == 1) {
                for (int j = n-1; j >= 0; j--) {
                    arr[i][j] = Integer.parseInt(st.nextToken());
                }
            }
        }
        /*
        * t loop
        * */
        for (int i = 0; i < t; i++) {
            int temp1 = arr[1][0];
            int temp2 = arr[0][n-1];
            for (int j = 0; j < 2; j++) {
                if (j == 0) {
                    for (int k = n-2; k >= 0; k--) {
                        arr[j][k+1] = arr[j][k];
                    }
                    arr[0][0] = temp1;
                } else if (j == 1) {
                    for (int k = 0; k < n - 1; k++) {
                        arr[j][k] = arr[j][k+1];
                    }
                    arr[1][n-1] = temp2;
                }
            }
        }
        for (int i = 0; i < 2; i++) {
            if (i == 0) {
                for (int j = 0; j < n; j++) {
                    System.out.print(arr[i][j] + " ");
                }
            } else if (i == 1) {
                for (int j = n-1; j >= 0; j--) {
                    System.out.print(arr[i][j] + " ");
                }
            }
            System.out.println();
        }
    }
}
Comments