본문 바로가기

알고리즘119

[프로그래머스] 문자열 내림차순으로 배치하기 https://school.programmers.co.kr/learn/courses/30/lessons/12917 const a = 배열.sort((a, b) => a a b.charCodeAt() - a.charCodeAt()); return sorted.join(''); } 문자를 아스키코드로 변환 charCodeAt() 2023. 6. 2.
[프로그래머스] 문자열 내 맘대로 정렬하기 https://school.programmers.co.kr/learn/courses/30/lessons/12915 주의할 점 : n이 같으면 사전순으로 정렬한다 => n끼리 문자들을 분류한다 obj에 [각 n인덱스의 code값]: [문자, 문자...] 이렇게 정리한다. key = str.charCodeAt(n) 사용 Object.entries()를 돌려서 answer에 문자 순서대로 넣기 문자들 알파벳순으로 정렬: arr.sort((a, b) => a < b ? -1 : 1) object의 key가 integer이면 자동으로 정렬된다 function solution(strings, n) { var answer = []; const obj = {}; for (const str of strings) { co.. 2023. 5. 30.
[프로그래머스] 햄버거 만들기 JS https://school.programmers.co.kr/learn/courses/30/lessons/133502 문제 설명 햄버거 가게에서 일을 하는 상수는 햄버거를 포장하는 일을 합니다. 함께 일을 하는 다른 직원들이 햄버거에 들어갈 재료를 조리해 주면 조리된 순서대로 상수의 앞에 아래서부터 위로 쌓이게 되고, 상수는 순서에 맞게 쌓여서 완성된 햄버거를 따로 옮겨 포장을 하게 됩니다. 상수가 일하는 가게는 정해진 순서(아래서부터, 빵 – 야채 – 고기 - 빵)로 쌓인 햄버거만 포장을 합니다. 상수는 손이 굉장히 빠르기 때문에 상수가 포장하는 동안 속 재료가 추가적으로 들어오는 일은 없으며, 재료의 높이는 무시하여 재료가 높이 쌓여서 일이 힘들어지는 경우는 없습니다. 예를 들어, 상수의 앞에 쌓이는 .. 2023. 5. 29.
[프로그래머스] 키패드 누르기 https://school.programmers.co.kr/learn/courses/30/lessons/67256 현재 오른쪽, 왼쪽 손가락의 위치를 매번 이동후에 갱신해야한다 currLeft, currRight 1~9까지 정해진 위치, 손을 obj 로 config 해서, 한번에 위치를 파악할 수 있다 (되도록 확장하기 편하게 만들자. 특수적인 공식%으로 가독성을 해하지말고) 맨하튼 거리: Math.abs(start[0] - end[0]) + Math.abs(start[1] - end[1]) function manhattanDist(start, end) { return Math.abs(start[0] - end[0]) + Math.abs(start[1] - end[1]); } function soluti.. 2023. 5. 28.
[프로그래머스] 과일장수 (런타임 에러 문제점 찾는 법) https://school.programmers.co.kr/learn/courses/30/lessons/135808# 먼저 score을 sort한뒤 큰 수부터 m개씩 박스에 담는다 answer += 담을때 가장 싼 가격 * m function solution(k, m, score) { var answer = 0; score.sort((a, b) => b - a); while(score.length >= m) { const box = score.splice(0, m); const cheapest = box[m-1]; answer += cheapest * m; } return answer; } => 시간초과: sort 워스트는 O(n^2) 이기 때문에 (10^6)^2 >10^8 => 그럼 obj O(n) 사.. 2023. 5. 28.
[프로그래머스]둘만의 암호 https://school.programmers.co.kr/learn/courses/30/lessons/155652 알파벳 a에서 z까지 어떻게 구현하지? => 생각이 난건 array, string s를 돌면서 현재 문자의 인덱스 구하기 정해진 이동수 만큼 현재 문자에서 이동하기 (단 여기서 당시의 문자가 skip해야하면 이동수--) 다 이동하고 난뒤의 문자를 answer에 추가 function solution(s, skip, index) { var answer = ""; const alphabets = "abcdefghijklmnopqrstuvwxyz"; for (let i = 0; i < s.length; i++) { const curr = s[i]; let currIndex = [...alphabe.. 2023. 5. 27.