23.09.25

📚 오늘 공부한 것

새롭게 알게된 것

자바스크립트로 큐 구현하기

class Queue {
    constructor(){
        this.queue = []
        this.front = 0
        this.rear =0
    }
    enqueue(v) {
        this.queue[this.rear++] = v;
    }
    dequeue() {
        const value = this.queue[this.front]
        delete this.queue[this.front]
        this.front +=1
        return value
    }
    peek() {
        return this.queue[this.front]
    }
    size() {
        return this.rear - this.front
    }
}

파이썬처럼 queue 모듈이 있는 것이 아니라 매번 직접 구현하는게 시간도 오래걸리고 오류를 만들 가능성이 크다.. 파이선 .pop[0]처럼 배열 맨 앞을 삭제하고 반환받는 shift()라는 함수가 있지만! 강의에서도 사용을 권하지 않았고 시간 또한 오래걸린다(파이썬pop[0] 사용 지양과 마찬가지 인듯)

shift() 사용 지양!

강사님도 shift를 사용하지 말라고 하셨고 O(n)이라는 시간때문에 안쓰는게 맞지만, 다른 사람들의 문제 풀이를 봤을 때 빈번하게 사용이되어서 조금 의문이 들었다.
속도 비교 블로그글을 보고 상당히 큰 차이를 느끼고 큐를 쓰기로 다짐다짐 ㅎㅎ..

프로그래머스 베스트앨범 JS 풀이

function solution(genres, plays) {
    var answer = [];
    const genreMap = new Map();

    genres
        .map((genre, idx) => [genre, plays[idx]])
        .forEach(([genre, play], idx) =>{
            const data = genreMap.get(genre) || {total : 0, songs :[]};
            genreMap.set(genre, {
                total : data.total + play,
                songs: [...data.songs, {play, idx}].sort((a,b) => b.play - a.play).slice(0,2)
            })
        })

        return [...genreMap.entries()]
                .sort((a,b) => b[1].total - a[1].total)
                .flatMap(item => item[1].songs)
                .map(song => song.idx)
}

어려웠던 점

큐 사용시 파이썬에선 추가 구현없이 모듈을 불러와 사용했는데, 자바스크립트에선 클래스로 구현해야하는 점이 번거롭게 느껴졌다.
JS에서 사용하는 고차함수들 사용법에 미숙했다.




오늘 회고

Keep

라이브코딩 생각보다 흥미진진하고 좋았다! 일단 풀어낸다는 목표하에 더럽게(?)푼 것 같아서 이후에 로직과 코드를 수정해낸 것에 뿌듯하다

Problem

실습문제 풀 때 구상->파이썬 구현 ->JS 구현을 하다보니 시간이 많이 들었다. 그리고 JS 함수들 숙련도면에서 많이 부족함을 느꼈다.

Try

자스 강의듣는 단위기간 통해서 자스로 PS하는 단련을 조금씩 하려고 한다.

profile
코딩하는 고구마 🍠 Life begins at the end of your comfort zone

0개의 댓글

Powered by GraphCDN, the GraphQL CDN