🔥 Problem Solving/programmers
[프로그래머스] 월간 코드 챌린지 시즌3 없는 숫자 더하기
budtree
2022. 1. 28. 10:27
더보기
더보기
제한사항
입출력 예numbersresult
입출력 예 설명
문제 설명
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