[ 목차 ]
📢 문제 출처
⏰ 문제 설명
- 0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다.
- numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
⏰ 입출력 예시
- 입출력 예 #1
- (1) 5, 9가 numbers에 없으므로, 5 + 9 = 14를 return 해야 합니다.
- 입출력 예 #2
- (1) 1, 2, 3이 numbers에 없으므로, 1 + 2 + 3 = 6을 return 해야 합니다.
⏰ 풀이
✔ 1번 풀이 (feat. for 문)
class Solution {
/*=== for문 ===*/
public static int forArray(int[] numbers){
int answer = 0;
//0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers
for (int i = 0; i < 10; i++) {
boolean checkNum = false;
for (int j = 0; j < numbers.length; j++) {
if(i == numbers[j])
{
checkNum = true;
break;
}
}
if (!checkNum){
answer += i;
}
}
return answer;
}
public int solution(int[] numbers) {
int answer = -1;
answer = forArray(numbers);
return answer;
}
}
- 0 ~ 9 까지의 배열 안에서 진행하기 때문에 반복 횟수를 10번으로 제한한다.
- Flag를 false로 초기화해서 사용해서 리스트 안에 있는 number가 있으면 true로 변경
- Flag가 false 시에는 값을 더해준다.
- 반복문이 끝나고 해당 값을 리턴해준다.
✔ 다른 풀이 (feat. stream)
import java.util.*;
import java.util.stream.IntStream;
class Solution {
public static int streamArray(int[] numbers) {
int answer = 0;
//0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers
answer = IntStream.range(0, 10).filter(n -> Arrays.stream(numbers).noneMatch(k -> n == k)).sum();
return answer;
}
public int solution(int[] numbers) {
int answer = -1;
answer = streamArray(numbers);
return answer;
}
}
- IntStream.range(A, B) =======> for(int i = A; i < B; i++)
- Filter() 사용 =======> ( ) 안에 들어가는 참인 요소들만 추출
- (k -> Array.steam(numbers)) =======> for(int i = k; i < numbers.length; i++)
- Arrays.steam(numbers).noneMatch() -> 특정 조건을 만족하는 요소가 하나라도 있는 경우 false를 반환 및 실행 중지
- noneMatch(k -> n == k) =======> (n == k)가 아닌 경우 반환
- filter().sum() =======> filter 안에 들어간 값을 모두 더해준다.
- 더해준 값을 answer에 대입하고 return 한다.
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 홀짝에 따라 다른 값 반환하기 (0) | 2023.08.10 |
---|---|
[프로그래머스] 나누어 떨어지는 숫자 배열 (0) | 2023.08.09 |
[프로그래머스] n번째 원소까지 (0) | 2023.08.09 |
댓글