🔥 Problem Solving/programmers

[프로그래머스] 월간 코드 챌린지 시즌3 없는 숫자 더하기

budtree 2022. 1. 28. 10:27

 

 

더보기
더보기

문제 설명

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


제한사항
  • 1 ≤ numbers의 길이 ≤ 9
    • 0 ≤ numbers의 모든 원소 ≤ 9
    • numbers의 모든 원소는 서로 다릅니다.

입출력 예numbersresult
[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 해야 합니다.

 

 


 

🔥 [로직]

전체 합(45)에서 정수 배열에 들어간 값을 차례로 빼주기

 

🔥 [최종 코드]

class Solution {
    public int solution(int[] numbers) {
        int answer = 45;
        
        for(int num : numbers) {
            answer -= num;
        }
    
        return answer;
    }
}

 

🔥 [소감]

 

의외로 오랜 시간이 걸렸다.. 맨 처음에 Arraylist에서 Arrays.asList(numbers).contains(i)에 해당되지 않는 숫자들을 더하려고 했는데 아무리 시도해도 모든 케이스에 45라는 답이 나와서 한참 애먹었다.

알고보니 int[]같은 기본 배열에서의 Arrays.asList는 List<int[]>형이 되어버리기 때문에 그 int[]형 자체가 하나의 리스트가 되어버려 내가 원하는 데이터형이 아니었다.. 그것도 모르고 삽질을 계속한 나.

(참고 -  https://stackoverflow.com/questions/31422025/arrays-aslistint-not-working )

내가 원하는 방식으로 하려면 

List<Integer> list = new ArrayList<>(); 
for(int number: numbers) { 
	list.add(number); 
}

이렇게 List<Integer>형을 선언해서 하나씩 값을 add해주는 방식을 써야한다.

List<Integer>와 int[]형의 차이에 대해 공부하는 시간이 필요할 것 같다.

(https://wayhome25.github.io/cs/2017/04/17/cs-18-1/)

여기에 정리가 잘 되어 있는 블로그 찾음! 

 


 

코테 준비를 본격적으로 시작한지 얼마 되지 않아 코드에 미흡한 점이 많을 수 있습니다. 
부족한 점 피드백 주시면 앞으로의 포스팅에 반영하겠습니다! 봐주셔서 정말 감사합니다 :)
-zelkova