이번 문제는 비교적 간단하였다. 1부터9까지의 숫자 중 일부 숫자가 비거나 순서가 뒤바뀐 상태에서 없는 숫자들만 찾아 더한 값 을 구하면 된다.
List를 선언하고, 비교하기 위해 1-9까지의 숫자를 담아준다.
List<int> compareNums = new List<int>();
for (int i = 1; i < 10; i++)
compareNums.Add(i);
그 뒤에 이중 for 문을 통해 비교 하며 일치 하는 값이 있다면 위에서 선언한 list에서 제거해주는 방안을 사용했다.
for (int i = 0; i < numbers.Length; i++)
{
for (int j = 0; j < compareNums.Count; j++)
{
if (numbers[i] == compareNums[j])
compareNums.Remove(compareNums[j]);
}
}
그 뒤에 list에 남아있는 값을 더하면 끝이다.
for (int i = 0; i < compareNums.Count; i++)
answer += compareNums[i];
엄청 간단한 문제인데 복잡하게 풀어낸 것 같아 마음이 불편하다.
다른 사람들의 풀이를 보니 Linq를 사용해서 아주 간단하게 푼 케이스가 있어서 가져와봤다.
var numberArray = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
return numberArray.Except(numbers).Sum();
Except(numbers)를 통해 numberArray에 저장된 숫자를 빼고, 남은 숫자를 더하는 방식인 것 같다. Linq가 참 간단하게 풀어낼 수 있어서 좋은 것 같다.