24번

nacSeo (낙서)·2022년 12월 21일
0

DailyCoding

목록 보기
24/28

두 가지 배열을 입력받아 한 배열이 또 다른 배열의 부분 집합인지 여부를 리턴하는 문제였다.

내가 떠올린 방법은,
같은 값들을 담을 List result를 하나를 선언하고,
sample배열base배열의 부분집합인지를 판별하기 위해 sample배열순회하며 해당 값마다 base배열의 요소에 같은 값이 있는 지 판별하고, 만약 있다면 result 리스트에 추가해주는 것이다.
이 후 최종적으로 result.size()sample.length의 값이 같다면 true를 반환하는 것이다.
생각한 방법대로 코딩을 해보자니, base배열에 같은 값이 있는지를 어떻게 구현할 것인지, 만약 base배열 역시 순회를 돌아주면서 비교를 하면 시간복잡도가 되게 오래 걸릴 것 같다는 벽에 부딪혔다. 그래도 부턱대고 코드를 작성해서 돌려보니 테스트는 1개만 통과 ... 내 코드가 잘됐든 잘못됐든 좋은 방법같지가 않은 느낌이 들었다.

따라서, 일단 제출 후 레퍼런스 코드를 참고해보았다. (현재 나에게는 알고리즘보다는 지금 학습하고 있는 스프링이 매우 중요했기에... 시간을 많이 쓸 수가 없다 🥲)
해당 레퍼런스 코드에는 base배열을 stream을 사용해 List로 변환해주고, sample배열을 순회하며 List에 같은 값을 포함하고 있는지 List.contains(i)를 사용하여 풀이하였다.
리스트를 사용하는 것까지는 떠올렸는데 여기까지는 도달하지 못했던 것이다,, 그리고 해당 코드를 타이핑하며 느낀 게 아직 나는 컬렉션에 대해 좀 약하다는 느낌이 들었다. 이번 주말을 이용하여 List와 Stream 등에 대해 좀 더 공부해봐야겠다.

profile
백엔드 개발자 김창하입니다 🙇‍♂️

0개의 댓글