Level 2

    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로 계속 나누어주면 된다.

    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번으로 진..