본문 바로가기

Algorithm272

[ 자바스크립트(JavaScript) ] section06 - 7 - 교육과정 설계 📍 section06 - 7 - 교육과정 설계 현수가 짠 수업 설계도가 주어진 수업계획표와 맞는지 검증하는 문제다. 마찬가지로 queue 자료구조를 사용하면 되는데, 현수의 수업 설계도를 앞에서부터 하나씩 꺼내서 비교해야 한다. 그런데 while문 보다는 for문을 사용해야하는데 만약, 수업계획표가 수업 설계도에 하나도 포함이 되어있지 않으면 while문이 멈추지 않는다. 따라서 for문을 사용해 수업설계도에 하나씩 접근하면서 수업 계획표가 있는지 살펴보는 방법이 괜찮은 접근 방법일 것이다. 나는 이렇게 풀었다. 수업 설계도를 배열로 만든다.(split) 수업 계획표(target)를 하나씩 돌면서 수업 설계도(s)도 한 번씩 돈다. 수업 설계도의 맨 앞과 수업 계획표의 맨 앞이 똑같으면 cnt++하고 s.. 2021. 9. 2.
[ 자바스크립트(JavaScript) ] section06 - 6 - 공주구하기 📍 section06 - 6 - 공주구하기 공주 구하기 문제는 이전에 풀었던 요세푸스 문제와 동일하다. 요세푸스 문제는 큐(queue) 자료구조를 사용하면 풀 수 있다. 선생님께서는 이렇게 설명해주셨다. arr에 length가 1개일 때까지 반복한다. for문을 사용해 k-1번 돌린다. arr[0]을 맨 뒤로 넣는다. k번째 사람이 제외되어야 하므로 다음 값은 shift()한다. // 강의 코드 let n = 8; let k = 3; console.log(solution(n, k)); function solution(n, k){ let arr = Array.from({length: n}, (v, i) => i+1); while(arr.length>=2){ for (let i=0; i idx + 1); l.. 2021. 9. 2.
[ 자바스크립트(JavaScript) ] section06 - 5 - 쇠막대기 📍 section06 - 5 - 쇠막대기 이전에 풀어봤던 문제다. 당시 처음 풀 때는 이 문제를 왜 stack으로 푸는지 이해가 안 됐는데, 다시 보니까 조금이나마 이해가 된다. 이전 stack 유형과는 달리 stack[-1]값을 비교하는 것이 아니라 주어진 문자열 s[i-1]을 기준으로 비교하기 때문에 그 부분을 잘 캐치해야 문제를 풀 수 있다. 그리고 레이저를 만났을 때 cnt를 계산하는 방법이 조금 어려울 수 있는데, 레이저를 만나게 되면 지금까지 stack에 들어가 있는 (길이만큼 누적해주면 된다. ((는 쇠막대기를 의미함) 레이저를 만나지 않고 쇠막대기 (를 만나게 되면 cnt++을 해주면 된다. (는 무조건 stack에 넣는다. )를 만날 때 stack.pop()을 하는데, 여기서 s[i-1].. 2021. 9. 2.
[ 자바스크립트(JavaScript) ] section06 - 4 - 후위식 연산(postfix) 📍 section06 - 4 - 후위식 연산(postfix) 간단하게 후위식 연산에 대해서 알아보자면, 우리가 일반적으로 사용하는 사칙연산 7+7은 중위표기식이라고 한다. (숫자 사이에 +-*/가 들어감.) 후위표기식은 주로 컴퓨터가 많이 사용하는 방법으로 괄호가 없어도 우선순위를 정확하게 알 수 있다는 점에서 S/W에서 널리 쓰인다. 숫자를 만나면 stack에 담는다. 연산자를 만나면 stack에서 2개의 값을 꺼내 계산한다. 계산한 값을 다시 stack에 넣는다. stack에 값이 1개면 계산이 끝난다. 나는 이렇게 풀었다. 숫자는 모두 stack에 넣는다. 연산자를 만났을 때 stack에서 값 2개를 빼고 getCalculator 함수에 넣는다. 연산이 끝나면 다시 stack에 넣는다. 선생님은 이.. 2021. 9. 1.
[ 자바스크립트(JavaScript) ] section06 - 3 - 크레인 인형뽑기(카카오 기출) 📍 section06 - 3 - 크레인 인형뽑기(카카오 기출) 프로그래머스에서도 풀 수 있는 문제다. 예전에 한창 python으로 풀때는 끝까지 풀지 못했는데 지금 와서 JS로 풀어보니까 정답 판정을 받았다. 왜 못 풀었냐면 집게가 위에서부터 내려올 때는 2차원 배열에서 arr[row][column]가 아니라 arr[column][row]로 놓고 풀었어야 하는데, 왜 그렇게 설정하는지 잘 이해가 안 됐고, 집게로 인형을 뽑고 난 이후에 해당 값을 0으로 바꿔줘야 같은 `column`에 집게가 내려오면 다음 인형을 뽑을 수 있는데 이 과정을 이해하지 못했었다. 풀이 방법은 다음과 같다. move는 배열의 인덱스를 건드려야하므로 각각 1씩 빼주고 계산해야 한다. 집게가 내려오는 column에 값이 있으면 인.. 2021. 9. 1.