알고리즘
[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] 피보나치 수 - 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...
[Programmers] 짝지어 제거하기 - JavaScript
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 - 첫번째 function solution(s) { let arr = [...s]; while(arr.length >= 1){ let isNothing = false; for(let i = 0; i < arr.length - 1; i++){ if(arr[i] === arr[i + 1]){ arr.splice(i, 2); isNothing = true; break; } } if(!isNothing) return 0; } return 1; } 연속된 알파벳 2개 제거라는 것에 꽂혀서 문자열의 앞에서..
[Programmers] 카펫 - JavaScript
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 function getDevisor(num) { let answer = [] for(let i = 1; i < Number.parseInt(Math.sqrt(num)) + 1; i++){ if(num % i === 0) answer.push([i, Number.parseInt(num / i)]); } return answer } function solution(brown, yellow) { var answer = []; const devisors = getDevisor(yellow); for(l..