알고리즘 (JAVA) 002

2m·2022년 7월 16일
1

알고리즘

목록 보기
2/6

import java.util.ArrayList;
import java.util.Arrays;

class Solution {
    public int solution(int[] numbers) {
        int answer = 0;
		ArrayList<Integer> arCheck = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 0));

		for (int i = 0; i < numbers.length; i++) {
			for (int j = 0; j < arCheck.size(); j++) {
				if (arCheck.get(j) == numbers[i]) {
					arCheck.remove(j);
				}
			}
		}
		for (int u = 0; u < arCheck.size(); u++) {
			answer += arCheck.get(u);
		}
		return answer;
    }
}

자바의 일반 배열은 기본적으로 정적 배열이기 때문에 일반적으로 이미 정해진 배열에 값을 추가하거나 삭제하는 것이 불가능하다. 램에서 이미 배열의 길이 만큼 그 영역을 할당하고 있기 때문이다.

처음에는 어떻게든 일반 배열으로 해결하려고 서칭을 시도했다. 나는 이미 JS에 길들여져서 ArrayList에 보다 일반 배열을 사용하는 것이 편하고, 익숙하기 때문이다. 그럴 수 없다는 것을 알게 된 다음 어쩔 수 없이 ArrayList를 공부했다. 길이를 알기 위해선 length가 아닌 size()써야 한다는 것이나, 값을 뽑기 위해서 get을 써야 한다는 것을 알게되엇다.

솔직히 임포트를 하는 과정이나 어레이 리스트의 긴 문법을 적는 것이 귀찮다. Node.js나 프론트를 선택할걸 그랬다는 후회가 앞선다. 근데 난 셋 다 하고 싶었다. 여기서 다 배울 수 없어도 좋은 인터넷 강의가 많다는 것을 알고, 몇개 찾아놓은 것도 있어서 독학으로도 가능할 것 같다.

사실 이번 문제를 풀면서 내가 자바를 사랑했던 이유를 알게 되었다. 처음 자바를 통해 프로그래밍 기초를 배울 때, 모든 것이 신기했었다. 그 땐 "Hello Wolrd!!"가 그렇게나 인문학적이고, 철학적인 문장이라는 것을 알지 못했었지만 엘레베이터를 타면서, 신호등을 기다리면서, 자동문을 건너면서 코딩의 세계에 매료되고 있는 나를 발견했다. 그때의 자바는 나에게 딱 적당하게 투박하고, 적당하게 불친절했다. 스캐너를 쓰기 위해 임포트를 할 때마다 이미 여러 사람이 구축해 놓은 거대한 자바의 세계와 그 룰이 너무 멋있어 보였다.

하지만 난 지금 자바가 밉다. 배열에서 값 하나 빼기 위해서 내게 임포트를 요구하고, 복잡한 개념을 이해하도록 하는 것에 심술이 난다. 그래도 문제 풀어서 기분 좋다!

ps. 팀원의 다른 풀이😚 ArrayList를 안써도 됐었다... ㅠ

profile
hi

0개의 댓글