Algorithm
[Programmers] 스킬트리 - JavaScript
문제 https://school.programmers.co.kr/learn/courses/30/lessons/49993 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 function solution(skill, skill_trees) { var answer = 0; for(let skill_tree of skill_trees){ let stack = [...skill]; let isPossible = true; for(let v of skill_tree){ if(stack.includes(v)){ if(stack[0] === v) stack.sh..
[Programmers] 기능개발 - JavaScript
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 function solution(progresses, speeds) { var answer = []; let days = progresses.map((progress, idx) => Math.ceil((100 - progress) / speeds[idx])); let prev = days[0]; let sumOfFunc = 1; for(let i = 1; i < days.length; i++){ let cur = days[i]; if(prev < cur){ answer.push(sumOfFunc..
[Programmers] 점프와 순간 이동 - JavaScript
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 function solution(n) { if(n === 1) return 1; if(n % 2 === 0) return solution(n / 2); else return solution((n - 1) / 2) + 1; } 건전지 사용량을 최소화하려면 최대한 순간이동을 많이 해야한다. 그래서 이동해야하는 위치 n이 짝수인지, 홀수인지에 따라 나눠 처리하도록 했다. 위치 n이 짝수인 경우 예를 들어, n이 8이라면 처음위치인 0→1 한칸 점프, 1→2 순간이동, 2→4 순간이동, 4→8 순간이동..
[Programmers] N개의 최소공배수 - JavaScript
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 function getGCD(a, b) { let gcd = 1; if(a % b === 0) gcd = b; else if(b % a === 0) gcd = a; else{ for(let i = 2; i
[Programmers] 캐시 - JavaScript
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 function solution(cacheSize, cities) { var answer = 0; let cache = []; if (cacheSize === 0) return cities.length * 5; for(let city of cities){ city = city.toLowerCase(); let idx = cache.indexOf(city); if (idx !== -1){ cache.splice(idx, 1); cache.push(city); answer += 1; } else{ ..
[Programmers] H-Index - JavaScript
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 function solution(citations) { var answer = 0; citations.sort((a, b) => b - a); for (let i = 0; i = i + 1) answer++; else break; } return answer; } 문제가 이해가 제법 어려웠다. 문제 이해하다가 잠시 놓치면 뇌가 살짝 꼬이는 기분이였다. 2학년 때 자료구조 시간에 코테 볼 때도 이 문제 있었는데 그때도..
[Programmers] 피보나치 수 - JavaScript
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 function solution(n) { let arr = [0, 1]; for(let i = 2; i < n + 1; i++){ arr.push((arr[i-2] + arr[i-1]) % 1234567); } return arr[n]; } 먼저, 가장 익숙한 풀이법인 재귀로 풀었지만 시간초과가 났다. 불필요한 연산이 중복되어 시간복잡도와 함수 호출 스택에 무리가 많이가기 때문. 그래서 반복문으로 풀이 방법을 바꿨지만, 계속 답이 틀려서 답답했다. 검색해보니 n번째에만 1234567을 나눠주는 ..
[Programmers] 영어 끝말잇기 - JavaScript
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 function solution(n, words) { let stack = []; for(let i = 0; i < words.length; i++){ let numOfPlay = Math.ceil((i + 1) / n); let numOfPerson = ((i + 1) % n === 0 ? n : (i + 1) % n); if(stack.includes(words[i])){ return [numOfPerson, numOfPlay]; } if(stack.length && (stack[stack...