백준문제풀이 4단계 1차원 배열7 5597번 과제 안 내신 분..? (C#)

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

 

28개의 중복없는 숫자를 입력 받는데

1~30까지의 숫자중 입력받지 못한 두개의 숫자를 찾는 문제.

using System;
class BackJoon
{
    static void Main(string[] args)
    {
        int[] nums = new int[30];
        for (int i = 0; i < 30; i++)
            nums[i] = i + 1;
        for (int i = 0; i < 28; i++)
        {
            int N = Array.IndexOf(nums, int.Parse(Console.ReadLine()));
            nums[N] = 31;
        }
        Array.Sort(nums);
        Console.WriteLine(nums[0]);
        Console.WriteLine(nums[1]);
    }
}

 

일단 선언한 30크기의 int배열에 1부터 30까지 채워 넣는다.

그다음 28개의 숫자를 입력받으며 그 숫자와 같은 숫자의 인덱스를 찾고

해당 인덱스의 값을 31로 바꿔줬다.

 

31로 바꿔준 이유는 Sort를 쓰기 위해서 이다.

입력받은 숫자는 30이하이기 때문에.

 

정렬을 하고나서 0번째와 1번째 숫자를 출력 하면 끝.

 

 

 

 

다른 분들 풀이를 보고 나서 대단하다는 생각이 들었다.

 

i+1번째에서 i번째의 값을 뺀 값이 2인경우를 찾는 분도 있었고

bool배열을 선언한뒤 입력받은 인덱스를 모두 true로 바꿔준뒤

값이 false인 인덱스를 찾는 분도 있었다.

 

나는 왜 이런 생각을 못할까 라는 생각이 들었다.

좀 더 고민해보고 더 많은 문제들을 풀어 봐야겠다.

 

문제를 풀고나서 다른분들의 풀이를 보는것은 꽤 많은 도움을 준다.

내가 생각하지 못한 부분들을 볼수있으며, 그렇게 하나씩 배워간다.

 

문제를 맞추고 다음 문제로 바로 넘어가는것이 아니라

다른분들의 풀이를 한번 둘러보고 지나가길 추천한다.