본문 바로가기
Language/Java

[Programmers | Java | 월간 코드 챌린지 시즌3 문제 풀이] 없는 숫자 더하기 - Solution with Subtraction

by ㅇ달빛천사ㅇ 2024. 6. 23.
728x90

KDT 실무형 스프링 백엔드 엔지니어 양성과정 6기  |  Algorithm CODEKATA

없는 숫자 더하기

🏷 관련 주제 : Array Loop Operator Stream API




✔ Solution with Loop & Addition

import java.util.Arrays;

class Solution {
    public int solution(int[] numbers) {
        int answer = 0;
        int idx = 0;
        int n = -1;
        
        Arrays.sort(numbers);
        
        for (int i = 0; i <= 9; i++) {
            if (idx < numbers.length) {
                n = numbers[idx];
            }
            
            if (n == i) {
                idx++;
            } else {
                answer += i;
            }
        }
        
        return answer;
    }
}
채점 결과

✔ Solution with Loop & Subtraction

(🚀가장 빠름)
class Solution {
    public int solution(int[] numbers) {
        int answer = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9;
        
        for(int n : numbers) {
            answer -= n;
        }
        
        return answer;
    }
}
채점 결과

✔ Solution with Stream API

import java.util.Arrays;

class Solution {
    public int solution(int[] numbers) {
        int answer = 45 - Arrays.stream(numbers).sum();
        
        return answer;
    }
}
채점 결과

💥 오늘 만난 문제 & 나의 시도 💦 & 해결 방법 👍

📌 오늘 만난 문제 : 0 ~ 9 사이의 정수 중, 매개변수로 받은 numbers에 없는 정수의 합을 반환하시오.


0부터 9 사이의 정수 중 numbers에 없는 수의 합을 구하기 위해

반복문을 돌며 numbers에 들어있는 정수를 확인하고

탐색 결과 numbers에 없는 정수를 모두 합하려면 너무 오래 걸릴 것 같아서

먼저 0부터 9까지의 정수를 모두 합한 후, numbers의 원소들을 빼서 문제를 풀었다.

 

반복문으로 숫자를 더해서도 풀어보고 싶어서

for문과 덧셈 연산자를 이용한 코드도 작성해 보았다.

(numbers의 인덱스 증가 및 0 ~ 9 사이의 숫자와 numbers의 원소를 비교하는데서 약간 오류가 있었는데
코드 진행상황별 출력되는 값을 System.out.println()으로 확인하며 오류를 고쳐 결국 문제를 해결할 수 있었다.) 


💬 무엇을 새롭게 알았는지

더하기 문제이지만 발상을 전환하여 빼기 문제로 풀어보았다.







728x90


Top