💬 문제 설명
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
🚫 제한 사항
- 1 ≤ numbers의 길이 ≤ 9
- 0 ≤ numbers의 모든 원소 ≤ 9
- numbers의 모든 원소는 서로 다릅니다.
📢 입출력 예
👨🏫 입출력 예 설명
📃 제출 코드
class Solution {
public int solution(int[] numbers) {
int answer = 0;
int[] number = {0,1,2,3,4,5,6,7,8,9};
for (int i = 0; i < numbers.length; i++) {
number[numbers[i]] = 0;
}
for (int num : number) {
answer += num;
}
return answer;
}
}
✏ 해결방법 & 배운점
배열 선언 및 초기화
- 0부터 9 까지 숫자를 가지는 `number` 배열을 선언하였습니다.
- number 배열은 초기값으로 각 숫자가 자신의 인덱스에 위치하고 있습니다.
배열 순회
- `numbers` 배열의 길이만큼 원소들을 순회합니다.
- `numbers` 배열에 있는 값을 인덱스로 사용하여 `number` 배열의 해당 인덱스를 0으로 설정합니다.
- 즉, `numbers` 배열에 있는 숫자들은 number 배열에서 제외됩니다.
배열 합산
- number 배열의 모든 요소를 반복하면서 answer에 더합니다.
++ 다른 사람의 풀이
class Solution {
public int solution(int[] numbers) {
int sum = 45;
for (int i : numbers) {
sum -= i;
}
return sum;
}
}
사고력이 뛰어나신 분들이 많은거 같습니다.
코드 설명
초기화
- 0부터 9까지의 합인 45를 초기값으로 설정합니다.
배열 순회
- numbers 배열의 각 요소를 순회하면서 sum에서 해당 요소를 뺍니다.
결과 반환
- 모든 요소를 빼고 남은 sum 값은 numbers 배열에 없는 숫자들의 합이 됩니다.
왜 이 방법이 동작하는가?
- 0부터 9까지의 숫자의 합은 45입니다. 따라서 numbers 배열에 없는 숫자들의 합은 45에서 numbers 배열에 있는 숫자들의 합을 뺀 값이 됩니다.
- 예를 들어, numbers = {1, 2, 3, 4, 5}라면, sum은 초기에 45입니다. 반복문을 통해 1, 2, 3, 4, 5를 sum에서 빼면, sum에는 {0, 6, 7, 8, 9}에 해당하는 숫자들의 합인 15가 남게 됩니다.
'PS > LV.1 프로그래머스 문제' 카테고리의 다른 글
[프로그래머스] LV.1 제일 작은수 제거하기 - 자바 [19/80] (0) | 2024.07.17 |
---|---|
[프로그래머스] LV.1 나누어 떨어지는 숫자 배열 - 자바 [18/80] (0) | 2024.07.17 |
[프로그래머스] LV.1 음양 더하기 - 자바 [16/80] (0) | 2024.07.17 |
[프로그래머스] LV.1 콜라츠 추측 - 자바 [15/80] (0) | 2024.07.17 |
[프로그래머스] LV.1 서울에서 김서방 찾기 - 자바 [14/80] (0) | 2024.07.17 |