티스토리 뷰

반응형

 

 

프로그래머스 - 프린터

 

백준에서 풀었던 문제랑 똑같다.

그 때도 자바스크립트,파이썬 둘다 풀어봤는데, 이번에는 아래 링크와 같은 파이썬 풀이 방식으로 자바스크립트를 사용해 풀어보았다. 

 

[백준] 1996번 프린터큐 - 파이썬(python)

 

[백준] 1966번 프린터큐 - 파이썬 python

백준 1966 번 프린터큐 항해 99 심화반은 파이썬으로 알고리즘을 풀어야 한다. Javascript도 아직 신생아라고 생각하는데 갑자기 python으로 leekcode medium 급 문제를 풀게 되었다. 물론 나는 접근도 하지

algoroot.tistory.com

 

 

여담이지만 프로그래머스는 입력값을 따로 변수로 선언해 분리하는 작업이 필요하지 않아 편리했다. 

그리고 ui적으로도 보기 더 편한하고, testcase도 추가할 수 있고.. 여러가지 문제 풀기에는 편안한 사이트 같다. 

 

 


같은 문제를 python과 JavaScript 로 풀었을 때의 차이

파이썬으로 풀어봤기 때문에 로직은 같아서 잘 풀 수 있었던 것 같다. 

다른점이라 함은 배열안에서 max값을 찾는 것, indexArr 배열 생성 방법 , 배열의 앞부분을 자를 때 정도였던 것 같다. 

물론 파이썬에 있는 모듈 deque는 정말 정말 강력하다..앞뒤로 다 잘라주는데 O(1)이라니..

 

며칠간  하루 한문제 정도는 두 언어로 같이 풀어봤는데, 확실히 파이썬이 코테에 최적화된 언어라는게 어떤 말인지 알 것 같다. 

'파이썬 알고리즘 인터뷰' 책에는 같은 문제를 여러 방식의 풀이법으로 주고, 특히 마지막 부분에는 파이썬다운 문제풀이를 보여주는 경우가 있다. 한 줄로 끝나는 것도 있던데.. 참 보다보면 파이썬이 어떤 언어인지 잘 보여주는 책 같다. 

 

그래도..그래도..! 자스최고..나는 자바스크립트가 더 좋다 ㅎ 

 

1. 배열에서 최댓값 찾기 

python 

 max(queue)

JavaScript 

Math.max(...queue)

 

 

2. 0부터 n까지 배열 만들기 

python

idxArr = deque(range(0, queue.length))

JavaScript

let indexArr = Array.from({length: queue.length}, (v, i) => i);

 

 

3. 배열 첫번째 원소 자를 때 

python 

// deque 모듈 사용시
queue.popleft()
// 일반 list에서
queue.pop(0)

 

JavaScript

queue.shift()

 


제출 답안

function solution(priorities, location) {
    let answer = 0;
    let queue = priorities;
    let indexArr = Array.from({length: queue.length}, (v, i) => i);
    indexArr[location] = 'target'
 
    while(true) {
        if (queue[0] === Math.max(...queue)){
            answer +=1;
            if (indexArr[0] === 'target') {
                break;
            } else {
                queue.shift()
                indexArr.shift()
            }
        } else {
            queue.push(queue.shift());
            indexArr.push(indexArr.shift());
        } 
    }
    return answer;
}
반응형