[알고리즘 문제] 없는 숫자 더하기

Z_제트·2023년 12월 14일
0

코드 초기화 ↓

using System;

public class Solution {
    public int solution(int[] numbers) {
        int answer = -1;
        return answer;
    }
}

나의 풀이 ↓

using System;

public class Solution
{
    public int solution(int[] numbers)
    {
        int answer = -1;
        int sum = 0;
    
        for (int i = 0; i < 10; i++) // 0 ~ 9 돌기
        {
            bool hasNum = false;
    
            for (int j = 0; j < numbers.Length; j++)
            {
                if (i == numbers[j]) 
                {
                    hasNum = true;
                    break;
                }
            }
    
            if (!hasNum) 
            {
                sum += i;
            }
        }
        answer = sum;
        return answer;
    }
}

오랜만에 (개인적으로) 해결하기 까다로웠던 문제를 만났다.

의도한대로 잘 풀리지 않아서 다른 분들의 풀이 찬스를 참고하여 수정했다.

조심하자 :
// bool 변수 선언 위치
// if 문의 위치 (for 문 안에 들어갈지 밖에 있을지)


그리고 다른 풀이들을 참고하면서,

문제의 제한사항을 보면
int[] numbers 의 원소는 0 에서 9 사이고, 원소들은 서로 다르기 때문에 다음과 같은 풀이로도 해결 가능하다는 것을 배웠다.

다른 풀이 ↓

using System;

public class Solution
{
    public int solution(int[] numbers)
    {
        int answer = -1;
        int addOneToNine = 0;
        int sumIntArr = 0;
        
        for(int i = 0; i < 10; i++)
        {
            addOneToNine += i;
        }
        
        foreach (int num in numbers)
        {
            sumIntArr += num;
        }
        
        answer = addOneToNine - sumIntArr;
        
        return answer;
    }
}
profile
trying to make the world a better place with a cool head and warm heart

0개의 댓글