
이번 문제도 약간의 생각이 필요한 문제다.
이정도 난이도로 이어졌으면 좋겠지만 발전을 위해선 조금 더 어려워야 할 것 같다.
아무튼, 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가 갖는 의미를 엄청 예전에 몰랐다가 알게 된 기억이 난다.
오랜만에 쓰는거지만 바로 기억해준게 약간 고맙기도 하다.
확실히 배열은 복잡한 것 같다. 일차원 배열이라 어렵다고 하기도 뭐하지만
확실히 코드를 잊어버리는 순간 다시 추적해야 하는 일이 발생했다.
다음 문제는 조금 쉬운 것 같았다.
비슷하면서도 조금 더 어려운 문제들이 많이 나왔으면 좋겠다.
이상으로 도움이 되었길 바라며,
끝.
'코딩테스트 (C#)' 카테고리의 다른 글
백준 3052 : 나머지 - C# 풀이 (0) | 2024.09.13 |
---|---|
백준 5597 : 과제 안 내신 분..? - C# 풀이 (0) | 2024.09.12 |
백준 10810 : 공 넣기 - C# 풀이 (0) | 2024.09.10 |
백준 2562 : 최댓값 - C# 풀이 (0) | 2024.09.09 |
백준 10818 : 최소, 최대 - C# 풀이 (0) | 2024.09.07 |
댓글