문제 설명
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- 1 <= numbers의 길이 <= 9
- 0 <= numbers의 모든 원소 <= 9
- numbers의 모든 원소는 서로 다릅니다.
입출력 예
numbers | result |
[1, 2, 3, 4, 6, 7, 8, 0] | 14 |
[5, 8, 4, 0, 6, 7, 9] | 6 |
class Solution {
public int solution(int[] numbers) {
int answer = 0;
boolean[] num = new boolean[10];
for (int i = 0; i < numbers.length; i++) {
num[numbers[i]] = true;
}
for (int i = 0; i < num.length; i++) {
if (!num[i]) {
answer += i;
}
}
return answer;
}
}
boolean 배열을 10 크기로 만들어줍니다. for문이 numbers의 길이만큼 순회합니다. num의 numbers[i] 인덱스를 true로 만들어줍니다. 이 for문은 배열에 있는 숫자만을 true로 배열에 할당하므로, numbers 배열에 어떤 숫자가 없는지 확인할 수 있습니다. 이후 for문에서 num의 길이만큼 순회하면서 num[i]의 값이 true가 아닌 값을 찾아 answer에 더하기 할당 합니다.
다른 분들은 계수정렬이라는 방법을 사용하기도 하는 것 같습니다. 제 풀이가 계수정렬은 아니지만 계수정렬과 유사한 구조의 풀이인 것 같습니다. 또는 0-9까지의 합은 항상 45이므로, 45에서 numbers의 합을 빼주는 풀이도 있었습니다. 후자의 방법이 가장 쉬운 것 같기는 합니다.
'프로그래머스 > Lv. 1' 카테고리의 다른 글
[프로그래머스 코딩테스트] 나누어 떨어지는 숫자 배열(Java) (0) | 2023.04.06 |
---|---|
[프로그래머스 코딩테스트] 직사각형 별찍기(Java) (0) | 2023.04.06 |
[프로그래머스 코딩테스트] 정수 내림차순으로 배치하기(Java) (0) | 2023.04.06 |
[프로그래머스 코딩테스트] 문자열 내 p와 y의 개수(Java) (0) | 2023.04.06 |
[프로그래머스 코딩테스트] 문자열 다루기 기본(Java) (0) | 2023.04.05 |