바위 뚫는중

[프로그래머스] Lv1. 없는 숫자 더하기 본문

Algorithms/프로그래머스

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

devran 2023. 8. 23. 21:38
반응형

문제 설명

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

풀이

먼저 첫 풀이는 효율성이 떨어지는 ㅜ 답안만 맞는 코드

스택을 사용했었고, 런타임에러였다

import java.util.*;
class Solution {
    public int solution(int[] numbers) {
        int answer = 0;
        Stack<Integer> st = new Stack<>();
        Stack<Integer> st2 = new Stack<>();
        ArrayList<Integer> arr = new ArrayList<>();
        for(int i : numbers) {
            arr.add(i);
        }
        Collections.sort(arr);
        for(Integer i : arr) { //for문을 통한 전체출력
            st.push(i);
        }
        for(int i = 0; i < 10; i ++) {
            st2.push(i);
        }
        
        for(int i = 0; i< 10;  i++){
            if (st2.peek() == st.peek()) {
                st2.pop();
                st.pop();
            }
            else{
                answer += st2.pop();
            }
        }
        
        return answer;
    }
}

지금보니 말도안되게 풀었다는 것을 깨달았다

사실 그냥,,, 덧셈해서 풀면 되는 것이었다.

0부터 9까지 더하면 45이고,, 필요없는 숫자들의 덧셈이니 말그대로 다 더해서 45에서 빼주면 그만이다

내가 바보였다 그치만 풀었으니 됐어

import java.util.*;
class Solution {
    public int solution(int[] numbers) {
        int answer = 0;
        int tmp = 0; 
        for(int i : numbers) {
            tmp += i;
        }
        for(int i = 0; i< 10; i++){
           answer += i;
        }
        answer -= tmp;
        return answer;
    }
}
반응형