본문 바로가기
프로그래머스

[프로그래머스 JAVA] 없는 숫자 더하기

by 뿌비 2024. 7. 9.
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 해야 합니다.


🔥 코드

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

class Solution {
    public int solution(int[] numbers) {
        int answer = 0;
        List<Integer> intList = Arrays.stream(numbers).boxed().collect(Collectors.toList());
    
        for (int i=0; i<10; i++){
            if(!intList.contains(i)) {
                answer += i;
            }
        }
        return answer;
    }
}

🔥 문제 풀이 과정

없는 값들만 찾아 더해줘야 하는 문제를 봤을 때 indexof() , contains() 메서드가 떠올랐지만 지금은 특정 값이 들어가는지 안 들어가는지 찾는 거니까 contains()를 사용해야겠다고 생각했다
  1. contains()는 List 클래스에서 제공하는 메서드 이기 때문에 numbers를 int 배열 > List로 변경해 주었다
  2. numbers의 길이는 1 ~9이고 그 안에 값은 0 ~ 9 이니까 반복문 탈출 조건을 i가 0부터 시작해 9까지 돌고 i가 10이 되면 끝나게 해 주었다
  3. 반복문 안에서 if를 사용해 intList 안에 i 가 존재 하지 않는지 조건을 걸었고, 없다면 answer에 i의 값을 계속 더해주도록 해주었다

🔥 indexof() contains() 차이점

contains 메서드는 내부에서 indexOf 메서드를 호출해서 TRUE/FALSE를 반환하기 때문에 동작 원리는 동일하다

contains() : 특정 문자열이 들어가 있는지만 확인하는 경우

indexOf(): 특정 문자열이 어느 위치에 있는지 확인해야 하는 경우

728x90