티스토리 뷰

활동/Dev Course TIL

03.24.2022 TIL

geonwoopaeng@gmail.com 2022. 3. 24. 22:08

TIL

Done it

  • 베스트 앨범문제

totalMap을 통해 공통된 장르의 값을 더해 저장해서 Sort해서 먼저 나와야 하는 장르 순서를 구했습니다.

for (let i = 0; i < n; i++) {
    if (totalGenMap.has(genres[i])) totalGenMap.set(genres[i], totalGenMap.get(genres[i]) + plays[i]);
    else totalGenMap.set(genres[i], plays[i]);

    //genMap.set(i, [genres[i], plays[i]]); 해결방안
}

let totalGenMapSort = [...totalGenMap].sort((a, b) => b[1] - a[1]);
// let genMapSort = [...genMap].sort((a, b) => b[1][1] - a[1][1]); 해결방안

totalMap을 돌면서 해당 장르와 같은 것을 찾아 배열에 넣고 이 배열을 이용하여 답을 구했습니다. 이로 인해 O(n^3)의 시간 복잡도가 나왔고 런타임 에러가 발생했습니다.

for (let totalGen of totalGenMapSort) {
    let genArr = [];
    for (let i = 0; i < n; i++) {
        if (totalGen[0] == genres[i]) genArr.push([i, plays[i]]);
     }
    answer = [...answer, ...getSings(genArr)];
    }

그래서 genMap이라는 i => [genre, plays]를 저장하는 Map을 구현하였고 check변수를 통해 2개만 출력하도록 만들어서 O(n^2)의 시간 복잡도로 만들어 해결하였습니다.

for (let totalGen of totalGenMapSort) {
    let check = 0;
    for (let gen of genMapSort) {
        if (check < 2 && gen[1][0] == totalGen[0]) {
            answer.push(gen[0]);
            check++;
        }
    }
}

마지막으로 해설을 통해서 함수형 프로그래밍을 이용한 코드를 봤는데 정말 대박이었습니다. 더 연습하러 가보겠습니다. :)

  • O(logn)에 대해서
    • logn인 경우 밑은 크게 상관하지 않고 O(n)에 비해 매우 작고 O(1)과 매우 유사하다고 생각이 됩니다. 즉 O(n)일 때 조건이 발생한 경우라고 생각을 하려고 합니다.(이분 분할...)

 

Feeling

알고리즘을 푸는데 정말 아직 많이 부족하다는 것을 느끼고 있습니다.

그래서 하루에 한 문제라도 풀려고 노력을 해야겠습니다. 저의 실력에 아쉬움이 많이 남았습니다.

그리고 논리력이 좀 부족한 것 같아 논리 책을 이용하여 쌓으려고 합니다. 평일은 엄청 바쁘니 주말을 주로 이용해야 겠습니다. :)

 

 

REF

https://sinseonc.tistory.com/11

https://stackoverflow.com/questions/2307283/what-does-olog-n-mean-exactly

반응형

'활동 > Dev Course TIL' 카테고리의 다른 글

03.26.2022 TIL  (0) 2022.03.26
03.25.2022 TIL  (0) 2022.03.25
03.23.2022 TIL  (0) 2022.03.23
03.22.2022 TIL  (0) 2022.03.22
03.21.2022 TIL  (2) 2022.03.21
공지사항
최근에 올라온 글