코테

[Java] 없는 숫자 더하기

zenna 2024. 4. 8. 21:31
728x90
점수 : 1134 (+1)
테스트케이스 최대 소요시간 : 0.55ms, 72.6MB

 

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/86051?language=java

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

제출답안

import java.util.*;
class Solution {
    public int solution(int[] numbers) {
        int answer = 0;
        int index = 0;
        Arrays.sort(numbers);
        for(int i=0;i<10;i++){
            if(numbers.length<=index || i != numbers[index]){
                answer+=i;
            }else{
                index++;  
            }     
        }
        return answer;
    }
}

 

문제해설

import java.util.*;
class Solution {
    public int solution(int[] numbers) {
        int answer = 0; // 리턴할 합계값
        int index = 0; // numbers의 확인중인 인덱스 번호
        Arrays.sort(numbers); // 정렬
        for(int i=0;i<10;i++){ // 0~9 실행
        	// index가 numbers의 범위를 벗어났거나, i 가 배열에 없는 경우 answer에 합산
            if(numbers.length<=index || i != numbers[index]){
                answer+=i;
            }else{ // 값이 배열에 있다면 index를 증가
                index++;  
            }     
        }
        return answer;
    }
}

 


아예 발상의 전환으로 0에서 9까지를 전부 더한 45에서 배열의 값들을 전부 빼버린 사람이 있었다. 

문제를 정말 정확하게..파악한듯.

그리고 Stream을 잘 활용한 예도 눈에 띄었다. 

IntStream.range(0, 10).filter(i -> 
				Arrays.stream(numbers).noneMatch(num -> i == num)
            ).sum();

 


#99클럽 #99일지 #코딩테스트 #개발자스터디 #항해 #TIL

728x90