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

Kim Ji Eun·2022년 3월 24일
0

난이도

레벨1

문제

https://programmers.co.kr/learn/courses/30/lessons/86051

풀이

어려운 문제 풀다가 쉬운 문제로 돌아오다보니 자꾸 어렵게 푸려고 하는 것 같다.
이 문제도 굉장히 쉽게 풀 수 있는 문제이다.

없는 숫자의 합을 구하는 문제이므로 0~9의 합인 45에서 있는 숫자들을 빼주면 구할 수 있는 문제였다.

처음에 나는 제시된 배열을 리스트로 바꿔서 0~9의 숫자를 반복문 돌려 이 값을 포함하는지 여부를 판단하고 포함하지 않을 때 값을 더해주는 방식으로 풀어 정답을 받았지만(실행시간 오래 걸림), 간단한 풀이로 풀 수 있으니 둘다 알아두자~!

코드

1) 간단 풀이

public class Solution {
    public int solution(int[] numbers) {
        int answer = 45;
        for (int n : numbers) {
            answer -= n;
        }

        return answer;
    }
  1. 포함여부 확인해서 풀기

public class Solution {
    public int solution(int[] numbers) {
        int answer=0;
        for(int i=0;i<10;i++){
            if(!contains(numbers,i)){
                answer+=i;
            }
        }

        return answer;
    }
    // 다른 방안
    public boolean contains(int[] arr, int key) {
        return Arrays.stream(arr).anyMatch(i -> i == key);
    }
    
    // 이건 작동 안됨
    // Arrays.asList(arr) arr 자리에 Integer[] 배열이 들어가야하는데 int[] 배열이 들어가서 그런게 아닐까 하는 추측 
    // Array와 ArrayList가 사용할 수 있는 타입이 다르기 떄문 
    public boolean contains(final int[] arr, final int key) {
        return Arrays.asList(arr).contains(key);
    }
}
profile
Back-End Developer

0개의 댓글