백준문제풀이 4단계 1차원 배열9 10811번 바구니 뒤집기 (C#)

2024. 5. 14. 20:00백준 문제풀이/4단계 1차원 배열

 

공 넣고, 공 바꾸고, 이제는 바구니를 뒤집는다!

 

이번에는 배열의 역정렬 문제. (ex. Array.Reverse)

 

순서대로 번호가 적혀있는 바구니.

정수를 두개 받고 그 정수 범위 만큼 바구니를 역정렬 하면된다.

 

만약 바구니가 1 2 3 4 5 이고

주어진 정수가 2 , 4 이라면

2부터 4까지가 역정렬되어 1 4 3 2 5 가 되는것이다.

using System;
class BackJoon
{
    static void Main(string[] args)
    {
        string[] input = Console.ReadLine().Split();
        int N = int.Parse(input[0]);
        int M = int.Parse(input[1]);
        int[] nums = new int[N];
        for (int i = 0; i < N; i++)
            nums[i] = i + 1;
        for (int i = 0; i < M; i++)
        {
            string[] input2 = Console.ReadLine().Split();
            int N1 = int.Parse(input2[0]);
            int N2 = int.Parse(input2[1]) - int.Parse(input2[0]);
            Array.Reverse(nums, N1 - 1, N2 + 1);
        }
        Console.WriteLine(string.Join(" ", nums));
    }
}

 

입력받은 N 만큼 배열을 선언해주고

순서대로 배열을 채워주자 ( 1,2,3,4,....N)

 

그리고 M만큼 for문을 반복하자.

반복문에는 두개의 정수를 받고

N1 N2를 선언.

 

N1은 역정렬의 시작 범위.

배열의 길이는 0부터 시작하니까 - 1을 해주자

 

N2는 역정렬의 끝 범위.

필요한건 역정렬할 길이기 때문에

N1을 빼주자.

그리고 시작과 끝모두 포함해야하기 때문에 +1을 해주자.

 

이렇게 Reverse를 해주고

string.Join으로 공백과 연결해 출력하면 끝.