programmers
Programmers / Level 2 / [1차] 캐시 / JS
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr function solution(cacheSize, cities) { let cache = []; const [HIT, MISS] = [1, 5]; let answer = 0; cities = cities.map(el => el.toLowerCase()); for(const CITY of cities) { // 캐시에 이미 있다면 if(cache.includes(CITY)) { answer += HIT; cache.splice(cache.indexOf(CITY), 1); } // 캐시에 ..
Programmers / Level 2 / 멀리 뛰기 / JS
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr function solution(n) { const MODULAR = 1234567; let dp = Array.from({ length: 2000 }, () => 0); dp[1] = 1; dp[2] = 2; for(let i=3; i
Programmers / Level 2 / 점프와 순간 이동 / JS
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr function solution(n) { let cnt = 0; while(n) { if(n % 2 === 1) { cnt += 1; } n = Math.floor(n / 2); } return cnt; } 처음엔 dp로 풀어야 하나...? 고민했는데 아주 간단한 문제였다. 순간이동시에는 배터리가 닳지 않으니 왠만하면 순간이동을 하는게 좋지만 2의 배수가 아닐 경우에는 1칸씩 이동해주어야 한다. 따라서 2의 배수가 아닐 경우에만 1씩 더해주고 n이 0이 될때까지 2로 계속 나누어주면 된다.
Programmers / Level 2 / 예상 대진표 / JS
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr function solution(n, a, b) { let cnt = 0; while(true) { if(a === b) break; a = Math.ceil(a / 2); b = Math.ceil(b / 2); cnt += 1; } return cnt; } 규칙만 찾으면 매우 간단한 문제이다. 1번부터 2개씩 짝지어서 만약 이긴다면 같은 라운드로 진출하게 된다. 예를 들어 1번과 2번과의 게임에서 이긴사람은 다음 라운드에 1번으로 진출하게 된다. 5번과 6번은 다음 라운드에 3번으로 진..
Programmers / Level 2 / 튜플 / JS
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr /** * 문자열을 받아 배열로 변환해주는 함수 * * @param {string} s * @returns {string[][]} */ function stringToArray(s) { let result = []; s = s.split('}'); for (let i = 0; i < s.length; i += 1) { let current = s[i]; let tmpArr = []; let tmpStr = ''; for (let j = 0; j < current.length; j += 1..
Programmers / Level 2 / 구명보트 / JS
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr function solution(people, limit) { let answer = 0; // 내림차순으로 정렬 people = people.sort((a, b) => b - a); let [left, right] = [0, people.length - 1]; let heavier = people[left]; let lighter = people[right]; while (left limit) { left += 1; } // 두 합이 limit 보다 가볍거나 같다면 같이 탈 수 있으므로..