728x90
🔥 문제 설명
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 |
🔥 입출력 예 설명
입출력 예 #1 > 5, 9가 numbers에 없으므로, 5 + 9 = 14를 return 해야 합니다.
입출력 예 #2 > 1, 2, 3이 numbers에 없으므로, 1 + 2 + 3 = 6을 return 해야 합니다.
🔥 코드
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
class Solution {
public int solution(int[] numbers) {
int answer = 0;
List<Integer> intList = Arrays.stream(numbers).boxed().collect(Collectors.toList());
for (int i=0; i<10; i++){
if(!intList.contains(i)) {
answer += i;
}
}
return answer;
}
}
🔥 문제 풀이 과정
없는 값들만 찾아 더해줘야 하는 문제를 봤을 때 indexof() , contains() 메서드가 떠올랐지만 지금은 특정 값이 들어가는지 안 들어가는지 찾는 거니까 contains()를 사용해야겠다고 생각했다
- contains()는 List 클래스에서 제공하는 메서드 이기 때문에 numbers를 int 배열 > List로 변경해 주었다
- numbers의 길이는 1 ~9이고 그 안에 값은 0 ~ 9 이니까 반복문 탈출 조건을 i가 0부터 시작해 9까지 돌고 i가 10이 되면 끝나게 해 주었다
- 반복문 안에서 if를 사용해 intList 안에 i 가 존재 하지 않는지 조건을 걸었고, 없다면 answer에 i의 값을 계속 더해주도록 해주었다
🔥 indexof() contains() 차이점
contains 메서드는 내부에서 indexOf 메서드를 호출해서 TRUE/FALSE를 반환하기 때문에 동작 원리는 동일하다
contains() : 특정 문자열이 들어가 있는지만 확인하는 경우
indexOf(): 특정 문자열이 어느 위치에 있는지 확인해야 하는 경우
728x90
'프로그래머스' 카테고리의 다른 글
[프로그래머스 JAVA] 정수 제곱근 판별 (0) | 2024.07.10 |
---|---|
[프로그래머스 JAVA] 음양 더하기 (0) | 2024.07.09 |
[프로그래머스 MYSQL] NULL 처리하기 (0) | 2024.07.08 |
[프로그래머스 MYSQL] 가격이 제일 비싼 식품의 정보 출력하기 (0) | 2024.07.08 |
[프로그래머스 MYSQL] 중복 제거하기 (1) | 2024.07.08 |