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