본문 바로가기

분류 전체보기181

[프로그래머스 LV2] 광물캐기 https://school.programmers.co.kr/learn/courses/30/lessons/172927 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 첫번째 풀이 dfs의 요점은 2가지다 1. 어딜 반복할거며 반복할때 필요한 매개변수들 2. 반복을 끝내는 조건 반복 function dfs(남은도구들, 남은광물들, 피로도) 반복 끝내는 조건 남은 도구가 없거나 || 남은 광물이 없을때 최종피로도를 리턴한다. 도구가 없을 시 = [0, 0, 0] 이고 도구의 갯수는 >= 0이니까 reduce를 썼다 if (picks.reduce((acc, .. 2023. 8. 22.
[프로그래머스lv2] 과제 진행하기 https://school.programmers.co.kr/learn/courses/30/lessons/176962# 1번째 풀이 1. plans의 start, playtime 시간문자열을 숫자로 변환한뒤, 그 시간에 따라 sort한다 2. 맨 처음 과제를 stack에 넣고 진행한다 3. 앞의 과제가 끝나는 시간 다음과제가 시작하는 시간이면, 앞의과제는 remained에 넣는다 (이때 playtime 남은 시간 = 앞 과제하는데 걸리는 시간 - (뒤 과제 시작시간 - 앞 과제시작시간) 으로 계산한다.) 5. 3번의 앞과제가 이미 다 끝났을때 remained남은과제가 남아있고 뒤 과제시작시간이 아직 안 됬을때 remained에서 뒤 과제를 빼서 stack에 넣고 뒤 과제를 마저진행한다. 6. 남은 과제를 .. 2023. 8. 11.
[프로그래머스] 덧칠하기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 첫풀이 끝에서 끝사이 range를 구한뒤 롤러길이만큼 나눈뒤 총 칠한 횟수 = 몫 + 나머지가 있으면 +1 해줬다. function solution(n, m, section) { const range = section[section.length-1] - section[0] + 1; const division = Math.floor(range / m); const remain = range % m; return division + (remain ? 1 : 0); } 반례) 위 풀이는 처음 시작점부터 끝점까지 롤.. 2023. 8. 7.
2차배열에서 한 값을 변경할때 전체 줄이 바뀌는 문제 해결법 2차배열을 생성할때 이렇게 생성하고 한 값을 변경했는데 내가 바꾸지도 않은 전체 줄의 값이 바꼈다 const newArr = new Array(len).fill(new Array(len).fill(null)); newArr[0][0] = 5; console.log(newArr) 출력값 [ [ 5, 0, 0, 0, 0 ], [ 5, 0, 0, 0, 0 ], [ 5, 0, 0, 0, 0 ], [ 5, 0, 0, 0, 0 ], [ 5, 0, 0, 0, 0 ] ] 내가 예상한 값은 [0][0]만 5로 변하는 건데 전체 행 줄의 값이 바꼈다. 문제의 이유를 찾아보니 각 행이 실제로 메모리에 있는 하나의 리스트를 가리키는 참조(reference)로 구현되어 있기 때문에 발생 해결법 해당 행을 수정하기 전에 해당 행.. 2023. 7. 29.
[프로그래머스] 한 번만 등장한 문자 https://school.programmers.co.kr/learn/courses/30/lessons/120896 방법1 문자열.lastIndexOf() function solution(s) { const arr = []; for (const c of s) { if (s.indexOf(c) === s.lastIndexOf(c)) { arr.push(c); } } return arr.sort().join(''); } 방법2 function solution(s) { var answer = ''; const obj = {}; for (const element of s) { obj[element] = (obj[element] || 0) +1; } // 1번만 등장하는 문자만 솎아내기 const once = O.. 2023. 7. 27.
[프로그래머스] 귤 고르기 https://school.programmers.co.kr/learn/courses/30/lessons/138476 리턴 값: k개씩 담을때 최소한 종류의 갯수 첫번째 풀이 function solution(k, tangerine) { var answer = 0; const obj = {}; let count = 0; for (const size of tangerine) { obj[size] = (obj[size] || 0) + 1; } // sort const sorted = Object.entries(obj).sort((a, b) => b[1] - a[1]); while (count < k) { count += sorted.shift()[1]; answer++; } return answer; } // .. 2023. 7. 18.