백준 줄 세우기

KIMYEONGJUN·2024년 11월 6일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

첫째 줄에는 학생의 수가 주어지고 둘째 줄에는 줄을 선 차례대로 학생들이 뽑은 번호가 주어진다.
학생의 수가 100 이하이고,
학생들이 뽑는 번호는 0 또는 자연수이며 학생들이 뽑은 번호 사이에는 빈 칸이 하나씩 있다.

학생들이 처음에 줄을 선 순서대로 1번부터 번호를 매길 때,
첫째 줄에 학생들이 최종적으로 줄을 선 순서를 그 번호로 출력한다.
학생 번호 사이에는 한 칸의 공백을 출력한다.

내가 이 문제를 보고 생각해본 부분

BufferedReader를 사용해서 입력을 받는다.
학생 수를 저장한다.
학생들이 뽑은 번호를 한 줄로 입력받고 공백으로 나누어 처리한다.
학생 순서를 결정하기 위해 반복문을 사용한다.
각 학생이 뽑은 번호를 정수로 변환하여 저장한다.
0이면 맨 뒤에 추가한다.
num이 0이 아닐 경우, 해당 위치에 추가한다.
결과를 출력한다.

코드로 구현

package baekjoon.baekjoon_24;

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

// 백준 2605번 문제
public class Main829 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<Integer> list = new ArrayList<>();
        int N = Integer.parseInt(br.readLine());

        // 학생들이 뽑은 번호를 한 줄로 입력받고 공백으로 나누어 처리
        String[] inputs = br.readLine().split(" ");
        for(int i = 0; i < N; i++) {
            int num = Integer.parseInt(inputs[i]);
            if(num == 0) { // 0이면 맨 뒤에 추가
                list.add(i + 1); // num만큼 앞에 가서 추가
            } else {
                list.add(list.size() - num, i + 1);
            }
        }

        for(int i : list) {
            System.out.print(i + " ");
        }

        br.close();
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글