Algorithm/프로그래머스

프로그래머스 - 없는 숫자 더하기 (Java, 자바)

h7ung 2023. 8. 24. 19:10
728x90

문제 링크

문제 설명

0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.


제한사항

  • 1 ≤ numbers의 길이 ≤ 9
    • 0 ≤ numbers의 모든 원소 ≤ 9
    • numbers의 모든 원소는 서로 다릅니다.

입출력 예

numbers result
[1,2,3,4,6,7,8,0] 14
[5,8,4,0,6,7,9] 6

 


입출력 예 설명

입출력 예 #1

  • 5, 9가 numbers에 없으므로, 5 + 9 = 14를 return 해야 합니다.

입출력 예 #2

  • 1, 2, 3이 numbers에 없으므로, 1 + 2 + 3 = 6을 return 해야 합니다.

문제 풀이 방법

사실 이 문제는 이미 9개월전에 풀었던 문제였다.

면접시 라이브 코딩할때 해당 문제를 긴장해서 잘 풀이하지 못하여 반성하는 마음으로 다시 풀고 다시 정리하게 되었다.

 

  1. 배열을 정렬한다.
  2. 0 ~ 9 까지 비교할 기준이 되는 변수 배열 index 를 하나 만든다.
  3. 0부터 9까지 숫자를 비교하면서 index 보다 배열의 길이가 작아지는 순간 없는 숫자가 있으므로 없는 숫자를 해당하는 i 를 더한다.
  4. 배열의 값과 i의 값이 다를 경우도 배열에 해당 값이 없으므로 더한다.
  5. 배열의 값과 i 의 값이 같을 경우 index 만 증가한다.

전체 코드

import java.util.Arrays;
class Solution {
    public int solution(int[] numbers) {
        int answer = 0;

        Arrays.sort(numbers);

        int index = 0;
        for (int i = 0; i < 10; i++) {
            if(index>=numbers.length){
                answer+=i;
            }
            else if(index < numbers.length && numbers[index] !=i){
                answer+=i;
            }
            else{
                index++;
            }
        }
        return answer;
    }
}
728x90