본문 바로가기
PS/BOJ

[자바] 백준 21756 - 지우개 (boj java)

by Nahwasa 2022. 6. 16.

문제 : boj21756

 

  배열에 실제로 값을 넣어보고, 문제에서 제시된 방법대로 시뮬레이션을 돌리듯 실제로 동작하도록 구현해보면 쉽게 풀 수 있다. 그냥 배열로 해도 되지만, 이하 코드는 ArrayList를 가지고 해봤다. 이 경우 index값은 0부터 시작되므로 index 기준으로는 짝수번을 제거해야 한다.

 

  처음에 1부터 n까지를 ArrayList에 넣는다. -> ArrayList 하나를 더 만들고 index 번호 기준으로 홀수번호들을 새로 만든 곳에 담는다. -> 기존 ArrayList와 바꿔치기를 한다.

위의 과정을 값이 1개만 남을 때 까지 계속하면 된다.

 

코드 : github

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class Main {
    private void solution() throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        ArrayList<Integer> arr = new ArrayList<>();
        for (int i = 1; i <= n; i++) arr.add(i);
        while (arr.size() != 1) {
            ArrayList<Integer> tmp = new ArrayList<>();
            for (int i = 1; i < arr.size(); i+=2) tmp.add(arr.get(i));
            arr = tmp;
        }
        System.out.println(arr.get(0));
    }
    public static void main(String[] args) throws Exception {
        new Main().solution();
    }
}

댓글