코딩테스트 (C#)

백준 10813 : 공 바꾸기 - C# 풀이

UniCoti-sub 2024. 9. 11.
반응형

백준 10813 : 공 바꾸기 - C# 풀이
문제 사진

 

이번 문제도 약간의 생각이 필요한 문제다.

이정도 난이도로 이어졌으면 좋겠지만 발전을 위해선 조금 더 어려워야 할 것 같다.

 

아무튼, n개의 바구니가 있는데 m번 "수정"할 기회를 갖는다.

수정은 서로의 바구니를 바꾸는 행위이다.

 

예를들어 "1 2"라는 입력이 있으면 1번과 2번 바구니의 내용물을 바꾸면 된다.

바구니가 총 n개 있기에 n을 길이로 갖는 배열을 만들고,

for문으로 돌아가면서 수정을 구현해주면 적당히 성공할 수 있을 것이다.

 

using System;

namespace unicoti {
    class Program {
        static void Main(string[] args) {
            string[] temp = (Console.ReadLine()??"").Split(' ');
            int.TryParse(temp[0], out int n);
            int.TryParse(temp[1], out int m);
            int[] array = new int[n];
            
            for(int i = 0; i < array.Length; i++) {
                array[i] = i+1;
            }
            
            for(int i = 0; i < m; i++) {
                string[] temparr = (Console.ReadLine()??"").Split(' ');
                int.TryParse(temparr[0], out int j);
                int.TryParse(temparr[1], out int k);
                
                int tempValue = array[j - 1];
                array[j - 1] = array[k - 1];
                array[k - 1] = tempValue;
            }
            
            for(int i = 0; i < array.Length; i++) {
                Console.Write($"{array[i]} ");
            }
        }
    }
}

 

이건 내가 만든 코드다.

딱 30줄 정도 되는데, 약간 긴 것 같기도 하다.

앞서 말한 로직을 구현하는데 노력을 했다.

 

우선 n과 m의 값을 받아오고,

배열의 초기값을 첫번째 for문을 통해 설정해준다.

 

그 다음 for문은 "수정"을 구현한 것이다.

tempValue라는 변수를 만들어서 간단하게 둘의 값을 바꿀 수 있었다.

 

마지막으로 그렇게 완성된 배열의 값을

형식에 맞춰 출력해주기 위해서 한번 더 for문을 사용해서 완성했다.


오늘의 느낀점)

temp가 갖는 의미를 엄청 예전에 몰랐다가 알게 된 기억이 난다.

오랜만에 쓰는거지만 바로 기억해준게 약간 고맙기도 하다.

확실히 배열은 복잡한 것 같다. 일차원 배열이라 어렵다고 하기도 뭐하지만

확실히 코드를 잊어버리는 순간 다시 추적해야 하는 일이 발생했다.

 

다음 문제는 조금 쉬운 것 같았다.

비슷하면서도 조금 더 어려운 문제들이 많이 나왔으면 좋겠다.


이상으로 도움이 되었길 바라며,

 

끝.

반응형

댓글