[백준 Array] 10811번 문제

Kwon·2023년 10월 31일

백준

목록 보기
9/22

사진 출처 : https://www.acmicpc.net/

백준 10811번 문제

풀이

이번 문제는 바구니 갯수 입력 값과 시도 값을 입력 후 해당 적은 두 정수를 포함한 사이 값들을 역순으로 바꾸는 문제이다.
ex) 1 2 3 4 5 -> 사이 값 입력 2,4 -> 1 4 3 2 5

import java.util.*;

public class Array9 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int N = sc.nextInt();
        int M = sc.nextInt();
        List<Integer> list = new ArrayList<>();

        for (int i = 0; i < N; i++) {
            list.add(i+1);
        }


        for (int i = 0; i < M; i++) {
            int num1 = sc.nextInt();
            int num2 = sc.nextInt();
            Collections.reverse(list.subList((num1 - 1), num2));
        }

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

1. 입력 및 값 삽입

Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int M = sc.nextInt();
List<Integer> list = new ArrayList<>();
for (int i = 0; i < N; i++) {
    list.add(i+1);
}

바구니 개수(N)와 시도 횟수(M) 입력 받은 뒤 숫자 바꾸기 편하게 list로 선언해준다.

2. 주어진 두 입력 값 사이 역순 만들기

for (int i = 0; i < M; i++) {
    int num1 = sc.nextInt();
    int num2 = sc.nextInt();
    Collections.reverse(list.subList((num1 - 1), num2));
}
for (int temp : list) {
    System.out.print(temp + " ");
}

시도 횟수 까지 num1, num2 값을 받아 해당 값들 사이를 역순으로 만들어준다. 여기서 역순 만들 땐 Collections.reverse() 함수를 사용하면 역순을 만들 수 있다.
그리고 list.subList() 에서 num-1을 해줘야 해당 주소지에 정확한 값을 가져올 수 있다. 쓰지 않는 경우 한 칸 뒤에 있는 값을 가져올거다.

profile
📲 @bu_kwon_2 / 💻 dnu05043.log / ⌨ Back-end / 🦁 LikeLion

0개의 댓글