프로그래머스 > 해시 > 베스트엘범
일단 자바 컬렉션에 대한 개념이 현저히 부족하였다. 큰 그림을 세워나가는데 너무나 큰 장애물이었다. 차라리 잘 모르는 것을 인정하고 일단 수학적으로 풀이방식을 설계하며 문제의 전체해결흐름을 이해했으면 좋았었는데.. 멘붕상태가 와서 늪에 빠지기 시작하면서 전체적인 사고를 하지 못했다. 나는 처음에 문제를 보고 일단 좀 복잡하다는 느낌을 받았다. 단순히 하나의 hashmap 으로는 문제를 풀 수 없다는 것을 직감했다. 사실 이 문제를 오후에 풀고 지금은 밤이라서 자세히 기억은 나지 않지만 그때 그 당시의 기억을 생각나는 대로 적으려 한다.
큰 그림
1. <index, 횟수> , <장르, 횟수> 이 두개를 hashmap 으로 만들어야한다.
2. 특정장르를 가지는 index의 값을 얻어야 한다. 이때, 장르의 이름이 중요한 것이 아니다.
3. 특정 index(노래)의 play 횟수를 sort(내림차순)해야한다.
벽
- 재생횟수가 같은 노래는 고유번호 낮은것이 먼저 오게 한다.
- 장르에 하나만 곡이 있으면 하나만 선택한다.
막힌 이유
1. 이때까지 key 를 기준으로 value를 조작했었다. 반대의 상황에 대한 연습이 부족했다. 시간제한 안에 새로운 것을 또 알아봐야 한다는 압박감과 귀차니즘으로 늪에 빠지며 내 사고 안에 갇히기 시작했다.
2. 큰 그림을 의사코드로 바꾸지 않았다. 컬렉션에 대한 이해도가 낮아서 자신감이 낮은 상태에서 이 문제를 풀었기 때문이라고 생각한다.
나의 풀이
깨달음
이번문제는 level3 답게 큰 그림이 그려지긴 했으나 막히는 부분이 너무나 많았다. 기존에 1시간안에 풀려고 했던 계획은 허망하게 무너지고 집착의 결과로 2시간 30분 정도를 쏟은 것 같다. 결국 해결은 했으나 상처가 너무 많이 남았던 문제였다. 이 문제를 푸는 데 있어서 필요했던 java collection 클래스에 대한 지식이 너무나 부족했음을 뼈저리게 느꼈고, 이에 대해 심화 학습을 진행하였다. HashMap 에서 사용되는 메서드 중 entrySet(), keySet(), values() 등등 유용하지만 알지 못하고 지나갈 뻔 했던 것들을 학습할 수 있는 좋은 기회였다. 또한 wrapper 클래스인 Integer 와 int 사이의 형변환의 중요성과 배열을 선언할 때 C++ 과 달리 new int[5]; 이런식으로 객체를 생성해주는 동시에 크기를 지정해 주어야 한다는 것도 다시 상기가 되었다. 자잘한 오류들로 인하여 너무 많은 시간을 허비한 것 같아 낙심했지만, 이후 스터디를 통해 내가 부족한 부분에 대해서 다시 짚어볼 수 있어서 성장의 기회였다.
일단 뛰고 와야겠다. 그리고 내일부터는 알고리즘 트레이닝 책을 통해서 고수의 사고를 배워야겠다. 문제를 풀고 좌절을 했고, 이 길이 내길인가 싶을 정도로 충격이었다. 좀 쉬고 나서 생각을 다시 고쳤고, 끝까지 포기하지 않고 꾸준히 매일 조금씩이라도 하자는 생각을 했다. 내가 부족하다고 생각되는 컬렉션 부분을 Java의 정석 책을 다시 보면서 보완하였고 자신감을 조금 얻을 수 있었다.
[러닝일지] 새로운 시작 - 복귀 7일차
한주를 돌아보며 - TMI. 어느덧 복귀를 한지 7일차가 되었다. 시험이 끝나기도 했고 날씨도 다시 좋아지고 여러모로 뛰기 좋은 날인 것 같아서 11시 16분쯤에 나갔다. 오늘 알고리즘 문제를 풀면서
creakycogwheel.tistory.com
'Programming > 알고리즘' 카테고리의 다른 글
[알고리즘] 우선순위큐(힙)는 왜, 언제 사용해야 할까 (0) | 2020.07.10 |
---|---|
[코테준비] 전체탐색으로 문제를 해결하자 - 1 (6) | 2020.05.14 |
[코테준비] 입문자를 위한 알고리즘 해결전략 - 3 (2) | 2020.05.11 |
[코테준비] 입문자를 위한 알고리즘 해결전략 - 2 (2) | 2020.05.07 |
[코테준비] 입문자를 위한 알고리즘 해결전략 - 1 (0) | 2020.05.06 |