티스토리 뷰

🔗link

[문제 설명]

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

[제한사항]

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

[입출력 예]

[입출력 예 설명]

입출력 예 #1
5, 9가 numbers에 없으므로, 5 + 9 = 14를 return 해야 합니다.
입출력 예 #2
1, 2, 3이 numbers에 없으므로, 1 + 2 + 3 = 6을 return 해야 합니다.


Solution.java

class Solution {
    public int solution(int[] numbers) {
        
        // 0~9 다 더하면 45
        // 배열에 있는 원소 다 더해서 빼면 => 없는 숫자의 합
        
        int sum = 0;
        
        for(int num : numbers){
            sum += num;
        }
        
        return 45 - sum;
    }
}

Solution.java - Boolean 배열을 활용한 체크 방식

class Solution {
    public int solution(int[] numbers) {
        boolean[] exists = new boolean[10]; // 인덱스가 곧 숫자 의미

        for (int num : numbers) {
            exists[num] = true; // 해당 숫자가 있음을 표시
        }

        int sum = 0;
        for (int i = 0; i < 10; i++) {
            if (!exists[i]) {
                sum += i; // 없는 숫자만 더함
            }
        }

        return sum;
    }
}

Solution.java - Set으로 푸는 방식

import java.util.*;

class Solution {
    public int solution(int[] numbers) {
        Set<Integer> set = new HashSet<>();
        for (int i = 0; i <= 9; i++) {
            set.add(i);
        }

        for (int num : numbers) {
            set.remove(num);
        }

        int sum = 0;
        for (int missing : set) {
            sum += missing;
        }

        return sum;
    }
}
  • Set은 "중복을 허용하지 않는" 자료구조.
    즉, 같은 값을 두 번 넣어도 한 번만 저장
  • 저장 순서를 유지하지 않음 (인덱스로 접근 불가)
  • 어떤 값이 "이미 있는지 아닌지" 빠르게 확인할 때 자주 사용 contains()
  • 1. 먼저 0~9를 다 Set에 넣기
    2. numbers 배열에 있는 숫자들을 set.remove(값) 으로 제거
    3. 그럼 남은 건 "빠진 숫자"들만 Set에 남음
    4. 그걸 전부 더해서 반환
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함