📌진행방식
⛔문제점
[내가 작성한 코드]
import java.util.*;
class Solution {
public int solution(int[] numbers) {
int answer = -1;
List<Integer> intList = new ArrayList<>();
for(int i=0;i<10;i++){
intList.add(i);
}
for(int num: numbers){
if(intList.contains(num)){
intList.remove(num);
}
}
answer = 0;
for(int num2:intList){
answer += num2;
};
return answer;
}
}
[에러메시지]
시도해 본 것들💦
- 처음에 배열에 해당 숫자들이 포함되어 있는지를 확인해야 겠다는 생각에 contains를 써야겠다고 생각했다. 그러고 포함된 숫자를 제거한 뒤 더해야겠다고 생각해 remove를 사용하였다. 바로 비교가 가능하다고 생각했는데 'IndexOutOfBoundsException'에러가 나왔다. ArrayList는 요소를 삭제할 때 내부적으로 크기를 조정하는데, 이때 ArrayList의 크기를 동적으로 조정해주지 않아 발생한 오류라고 한다.
💯해결
import java.util.*;
class Solution {
public int solution(int[] numbers) {
int answer = -1;
List<Integer> intList = new ArrayList<>();
for(int i=0;i<10;i++){
intList.add(i);
}
for(int num: numbers){
if(intList.contains(num)){
intList.remove(Integer.valueOf(num));
}
}
answer = 0;
for(int num2:intList){
answer += num2;
};
return answer;
}
}
- TIL을 쓰다 보니 Integer.valueOf(num) 대신에 indexOf(num)을 쓸걸,,,하는 생각이 들었다.......ㅎ......
개선할 점💪🏻
- 이것저것 구글링 해보다가 valueOf()로 가능하다는 걸 알았다. 그런데 Integer의 Wrapper객체가 필요하지 않는데 불필요하게 코드를 짰다. 다른 사람의 코드를 보니 엄청 간단하게 코드를 구현하였다.
class Solution {
public int solution(int[] numbers) {
int sum = 45;
for (int i : numbers) {
sum -= i;
}
return sum;
}
}
- 0부터 9까지의 숫자라고 정해져 있기 때문에 numbers배열에 숫자가 포함되어 있는지 없는지 상관없이 배열의 총합을 빼면 답이 나온는 거였다!!!!
import java.util.*;
class Solution {
public int solution(int[] numbers) {
int answer = -1;
ArrayList<Integer> arr1 = new ArrayList<>();
for(int i=0; i < 10; i++){
arr1.add(i);
}
ArrayList<Integer> arr2 = new ArrayList<>();
for(int i=0; i < numbers.length; i++){
arr2.add(numbers[i]);
}
int sum = 0;
for(int i=0; i < arr1.size(); i++){
if(!arr2.contains(arr1.get(i))){
sum += arr1.get(i);
}
}
return sum;
}
}
- 이분의 코드는 나와 같이 ArrayList를 사용하였는데 훨씬 가독성도 좋아보인다..
둘다 배열로 만들어 contains를 사용하여 같지 않은것을 더해줬다.
나는 intList.remove(Integer.valueOf(num));생각해내느라 40분은 걸린것 같은데ㅠㅠ
코드를 최대한 효율적으로 짜야된다는 것을 느꼈다.
또 기본 개념들이 정확하게 잡히지 않아서 코드를 짤때 어려움이 많은 것 같다.
처음부터 자바개념들을 다시 다져야겠다.
'TIL(Today I Learned)' 카테고리의 다른 글
TIL-230621 (0) | 2023.06.22 |
---|---|
TIL-230620 (0) | 2023.06.20 |
TIL-230617 (0) | 2023.06.17 |
TIL-230615 (0) | 2023.06.16 |
TIL-230614(인텔리제이(IntelliJ)에서 작성한 코드 GitHub Repository에 올리기) (0) | 2023.06.15 |