PS
Programmers / Level 0 / 최빈값 구하기 / JS
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr function solution(array) { let answer = 0; let numberCountObj = {}; array.forEach((el) => { numberCountObj[el] = numberCountObj[el] + 1 || 1; }); let max = Math.max(...Object.values(numberCountObj)); let cnt = 0; Object.entries(numberCountObj).forEach(el => { if(el[1] === ma..
Programmers / Level 0 / 연속된 수의 합 / JS
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr function solution(num, total) { let answer = []; let start = Math.ceil(total / num) - Math.floor(num / 2); let end = Math.floor(total / num) + Math.floor(num / 2); for(let i=start; i
Programmers / Level 2 / 괄호 회전하기 / JS
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr /** * 괄호 문자열을 입력받아 한 번 회전해서 반환하는 함수 * * @param {string} s 괄호 문자열 * @returns {string} */ function rotateString(s) { let result = ''; let bracketList = s.split(''); bracketList.push(bracketList.shift()); result = bracketList.join(''); return result; } /** * 올바른 괄호 문자열인지 판단해서 결..
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로 계속 나누어주면 된다.