문제 설명
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요
👽내 코드
class Solution {
public int solution(int[] numbers) {
int answer = 0;
//0~9까지 모든 수의 합 더하기
for(int i = 0; i < 10; i++){
answer += i;
}
//배열에 있는 값 빼기
for(int number : numbers){
answer -= number;
}
return answer;
}
}
처음에는 이중 for문을 생각했었다.
그런데 생각해보니 그렇게하면 없는 숫자를 찾는 것이 오히려 힘들 것이라 생각이 들었음
그럼 있는 숫자들을 빼면 되는게 아닌가? 역으로 생각해서 답 도출
🌈다른 풀이
import java.util.*;
class Solution {
public int solution(int[] numbers) {
int answer = 0;
int[] sum = {0,1,2,3,4,5,6,7,8,9};
for(int i = 0; i< sum.length; i++){
for(int j=0; j< numbers.length; j++){
if(sum[i] == numbers[j]){
sum[i] -= numbers[j];
}
}
answer += sum[i];
}
return answer;
}
}
이 풀이는 숫자가 발견되지 않을 경우에 어떻게 뺴지? 라는 생각을 다른 방식으로 역으로 생각한 것 같다.
숫자가 발견됐을 떄, 그 숫자를 0~9에서 차감하는 식으로 했다.
발견된 경우 sum 배열에서 차감하여 0으로 만든다음 바로 answer배열에 sum을 더했다.
'Coding Test > 프로그래머스 연습' 카테고리의 다른 글
[JAVA] 가운데 글자 가져오기 (0) | 2024.10.18 |
---|---|
[JAVA] 음양 더하기 (0) | 2024.10.18 |
[JAVA] 약수의 개수와 덧셈 (1) | 2024.10.02 |
[PCCE 기출문제] 2번 / 각도 합치기 (0) | 2024.10.01 |
[JAVA] 행렬의 덧셈 (0) | 2024.10.01 |