본문 바로가기

알고리즘/알고리즘

[프로그래머스] 없는 숫자 더하기

https://programmers.co.kr/learn/courses/30/lessons/86051

 

코딩테스트 연습 - 없는 숫자 더하기

0부터 9까지의 숫자 중 일부가 들어있는 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요. 제한

programmers.co.kr

 

자바 배열

Arrays.sort(arr);

Arrays.toString(arr)

// 배열로 비교해서 했으나 실패!
import java.util.Arrays;
import java.util.stream.Stream;
class Solution {
    public int solution(int[] numbers) {
        int answer = 0;
        Arrays.sort(numbers);
        System.out.println("Arrays.toString(numbers)  "+Arrays.toString(numbers));
        int temp =0;
        for(int i=0; i<numbers.length; i++){ // 매번 자리 값이 바뀌는데 어떻게 하지?
            if(numbers[i] == temp){
                
                 System.out.println("numbers[i]: "+numbers[i]+", temp>> "+temp);
                
            }else{
                System.out.println("numbers[i]: "+numbers[i]+", temp>> "+temp);
                answer+=temp;
                
                System.out.println("answer  "+answer);
            }
            temp++;
        }// for end
        
        
        return answer;
    }//solution end
}

 

 

// 0~9 총합: 45 
//45에서 배열에 있는 값을 빼주면 빠진 숫자의 합을 구할 수 있다.
// 값을 비교하지않고 머리를 써서 해결함
// 내머리에서 나옴~~
//하지만 그래도 값을 서로 비교하는 걸로 풀고 싶음
import java.util.Arrays;
import java.util.stream.Stream;
class Solution {
    public int solution(int[] numbers) {
        int answer = 0;
        Arrays.sort(numbers);
        //System.out.println("Arrays.toString(numbers)  "+Arrays.toString(numbers));
        // [0, 1, 2, 3, 4, 6, 7, 8] [0, 4, 5, 6, 7, 8, 9]
        
        for(int i=0; i<numbers.length; i++){
            answer += numbers[i];
        }// for end
        //System.out.println("answer  "+answer);
        answer = 45 -answer;
        
        return answer;
    }//solution end
}

// for in 사용
배열이라 for in을 사용함. 나도 다음번엔!!
for (int i : numbers) {
            sum -= i;
        }
        
        
// 스트림 사용
import java.util.Arrays;
import java.util.stream.IntStream;

class Solution {
    public int solution(int[] numbers) {
            return IntStream.range(0, 10).filter(i -> Arrays.stream(numbers).noneMatch(num -> i == num)).sum();
        }
}
import java.util.Arrays;

public class Array {
    public static void main(String[] args) {
        int[] numbers = {1,2,3,4,6,7,8,0};
        int answer = Solution2.solution(numbers);

    }
}
class Solution2 {
    public static int solution(int[] numbers) {
        int answer = 0;
        int[] sum = {0,1,2,3,4,5,6,7,8,9};
        System.out.println("최초 Arrays.toString(sum)> "+ Arrays.toString(numbers)+" 최초 Arrays.toString(sum)> "+ Arrays.toString(numbers));

        for(int i = 0; i< sum.length; i++){
            for(int j=0; j< numbers.length; j++){
                if(sum[i] == numbers[j]){
                    System.out.println("빼기 전 sum["+i+"]>> "+sum[i]);
                    System.out.println("빼기 전 numbers["+j+"]>> "+numbers[j]);
                    sum[i] -= numbers[j];
                    System.out.println("뺀 후 Arrays.toString(sum)> "+ Arrays.toString(numbers)+" 뺀 후 Arrays.toString(sum)> "+ Arrays.toString(numbers));
                }
            }
            System.out.println("최종 Arrays.toString(sum)> "+ Arrays.toString(numbers));
            answer += sum[i];
        }
        return answer;
    }//solution end
}

 

 

 

 

 

 

최초 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0] 최초 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0]
빼기 전 sum[0]>> 0
빼기 전 numbers[7]>> 0
뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0] 뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0]
최종 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0]
빼기 전 sum[1]>> 1
빼기 전 numbers[0]>> 1
뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0] 뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0]
빼기 전 sum[1]>> 0
빼기 전 numbers[7]>> 0
뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0] 뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0]
최종 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0]
빼기 전 sum[2]>> 2
빼기 전 numbers[1]>> 2
뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0] 뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0]
빼기 전 sum[2]>> 0
빼기 전 numbers[7]>> 0
뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0] 뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0]
최종 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0]
빼기 전 sum[3]>> 3
빼기 전 numbers[2]>> 3
뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0] 뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0]
빼기 전 sum[3]>> 0
빼기 전 numbers[7]>> 0
뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0] 뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0]
최종 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0]
빼기 전 sum[4]>> 4
빼기 전 numbers[3]>> 4
뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0] 뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0]
빼기 전 sum[4]>> 0
빼기 전 numbers[7]>> 0
뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0] 뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0]
최종 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0]
최종 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0]
빼기 전 sum[6]>> 6
빼기 전 numbers[4]>> 6
뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0] 뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0]
빼기 전 sum[6]>> 0
빼기 전 numbers[7]>> 0
뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0] 뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0]
최종 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0]
빼기 전 sum[7]>> 7
빼기 전 numbers[5]>> 7
뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0] 뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0]
빼기 전 sum[7]>> 0
빼기 전 numbers[7]>> 0
뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0] 뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0]
최종 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0]
빼기 전 sum[8]>> 8
빼기 전 numbers[6]>> 8
뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0] 뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0]
빼기 전 sum[8]>> 0
빼기 전 numbers[7]>> 0
뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0] 뺀 후 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0]
최종 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0]
최종 Arrays.toString(sum)> [1, 2, 3, 4, 6, 7, 8, 0]

Process finished with exit code 0