문제 설명
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
나의 풀이
import java.util.ArrayList;
public class AddingSomeNumbers {
public static void main(String[] args) {
int[] numbers = {1,2,3,4,6,7,8,0};
solution(numbers);
}
public static int solution(int[] numbers) {
int answer = 0;
ArrayList<Integer> numbersList = new ArrayList<>();
for (int number : numbers) {
numbersList.add(number);
}
for(int i = 0; i < 10; i++){
if(!numbersList.contains(i))
answer += i;
}
return answer;
}
}
접근
나의 풀이 방법 - Count는 ArrayList의 contains를 활용
그렇다면, 풀어야 할 문제는 2가지 : Array(int[])를 ArrayList로 어떻게 바꿀것인가?
- Count를 할 방법을 정해놓으니까, Array(int[])를 ArrayList로 변경만 하면 된다.
쉬운 방법 - https://fire-programmer.tistory.com/115
다른 사람의 풀이
// 1 - for 사용하지만, 문제에 대한 깊은 이해로 인해 모두 더한 수를 생각해 냄
class Solution {
public int solution(int[] numbers) {
int sum = 45;
for (int i : numbers) {
sum -= i;
}
return sum;
}
}
// 2 - 45(모두 더한 수)와 stram 객체를 활용한 방법으로, Stream을 익히는게 좋을듯
import java.util.Arrays;
class Solution {
public int solution(int[] numbers) {
return 45-Arrays.stream(numbers).sum();
}
}
오랜만에 풀어서 그런지 45를 생각해내지 못했다
게다가 Stream도 익숙지 않아서 생각하지 못해 아쉽다
느낀점
- Count할 방법을 미리 정해놓으니까, 문제의 접근 방식이 제한돼서 오히려 돌아서 푼 느낌
'개발 > 코딩 테스트' 카테고리의 다른 글
[프로그래머스] 문자열 다루기 기본 (0) | 2022.07.06 |
---|---|
[프로그래머스] 나머지가 1이 되는 수 찾기 (0) | 2022.07.05 |
[프로그래머스] 완전 탐색 - 모의고사 (0) | 2022.05.28 |
[프로그래머스] 정수 제곱근 판별 (0) | 2022.05.28 |
[프로그래머스] 약수의 개수와 덧셈 (0) | 2022.05.13 |