본문 바로가기

Algorithm/프로그래머스(Programmers)50

[ 자바스크립트(JavaScript) ] 프로그래머스 level2 - 기능개발 📍 프로그래머스 2단계 - 기능개발 프로그래머스 2단계 - 기능개발 ⚡️ 나의 풀이 이 문제에서 제일 크게 거쳐야 하는 기능은 2가지로 나뉜다. 첫 번째는 progresses와 speeds 값을 이용해서 배포가 며칠이 소요되는지 구해야 하고, 두 번째는 배포 날짜를 모아둔 값에서 제일 처음부터 배포를 할 때 다음 값이 현재 배포 일 수보다 작으면 같이 배포되고, 더 크면 나중에 배포되는 cnt값을 구해야 한다. 내가 풀 때는 첫 번째까지는 무난하게 구했는데 두 번째 cnt를 구하는 방식이 좀처럼 떠오르지 않았다. 도저히 방법이 떠오르지 않아 다른 사람은 어떻게 풀었는지 봤는데, for문 안에 i, j를 동시에 선언하고 count를 한 게 너무 신기했다. 거기에 j는 전치연산자를 사용했는데, 전치연산자는 .. 2021. 10. 22.
[ 자바스크립트(JavaScript) ] 프로그래머스 level1 - 모의고사 📍 프로그래머스 1단계 - 모의고사 프로그래머스 1단계 - 모의고사 ⚡️ 나의 풀이 풀이 방식을 떠올리는 게 조금 어려웠다. 각각의 수포자들이 찍는 방식에는 일정한 패턴이 있었고, 이 패턴을 어떤 방식으로 활용할지 생각하는 게 큰 관건이었다. 결론적으로 answer의 index와 각각 수포자들의 i % 패턴.length 으로 확인했다. 각각의 수포자들의 반복되는 패턴을 mathGiveUpMethod에 담아둔다. 가장 많이 문제를 맞힌 사람을 알기 위해 수포자의 인원만큼(3) 0으로 배열을 선언한다. answer 반복문을 돌면서 현재 answer[i]와 각각의 수포자의 패턴을 비교하여 동일한지 다른지 확인한다. 여기서 i%5, i%8, i%10을 한 이유는 만약, answer의 length가 mathGiv.. 2021. 10. 21.
[ 자바스크립트(JavaScript) ] 프로그래머스 level2 - 프린터 📍 프로그래머스 2단계 - 프린터 프로그래머스 2단계 - 프린터 ⚡️ 나의 풀이 스택/큐를 이용한 문제인데, 중요도에 따라 출력해야 하는 문서가 달라지므로 주의한다. location과 동일한 index를 쉽게 찾기 위해 index 배열을 새로 만들어 priorities.length만큼 index의 값을 주었다. priorities의 max값을 찾는다. priorities[0]값과 max가 동일한지 확인한다.(중요도가 가장 높은 문서인지 확인하는 작업) max값과 동일하면 shift시키는데, 이때 location이랑 동일한지도 확인한다. priorities[0]값과 max가 동일하지 않으면 나머지 목록 중 중요도가 높은 문서가 있으므로 제일 뒤로 보낸다. arr.push(arr.shift()) functi.. 2021. 10. 19.
[ 자바스크립트(JavaScript) ] 프로그래머스 level2 - 짝지어 제거하기 📍 프로그래머스 2단계 - 짝지어 제거하기 프로그래머스 2단계 - 짝지어 제거하기 ⚡️ 나의 풀이 이전에 한 스타트업의 FE 코딩 테스트를 치렀을 때 지금 문제와 비슷하게 출제되었다. 이 문제의 핵심은 같은 알파벳이 2개 붙어있는 짝을 어떻게 찾는지가 핵심인데, 결론적으로 스택(stack)을 이용해서 짝을 찾았다. 현재 stack이 비어있지 않고, stack[-1]이 현재 x와 같으면 stack의 제일 마지막 원소를 pop한다. (짝지어진 문자열이기 때문) 1번 조건에 충족하지 않으면 모두 stack에 넣는다. 주어진 문자열을 끝까지 탐색하고 남은 stack의 길이가 1보다 크면 짝지어 제거에 실패했기 때문에 0을 stack의 길이가 0이면 짝지어 제거에 성공했기 때문에 1을 리턴한다. function .. 2021. 10. 18.
[ 자바스크립트(JavaScript) ] 프로그래머스 level1 - 직사각형 별 찍기 📍 프로그래머스 1단계 - 직사각형 별 찍기 프로그래머스 1단계 - 직사각형 별찍기 ⚡️ 나의 풀이 row는 for문 대신repeat 함수를 이용하여 표현했고, column은 for문을 이용해서 표현했다. 나는 answer에 push하고나서 join으로 문자열로 바꿔줬는데, 그냥 console.log해도 정답판정이 나왔다. // 나의 코드 process.stdin.setEncoding('utf8'); process.stdin.on('data', data => { const n = data.split(" "); const a = Number(n[0]), b = Number(n[1]); let answer = []; let row = "*".repeat(a); for (let i = 0; i < b; i++.. 2021. 8. 3.