프로그래머스
-
[CodeKata] 프로그래머스 : 2.24(수), 위장Algorithm 2021. 2. 24. 13:40
🥋 Ooooth!! (Level 2) 🧮 풀이 function solution(clothes) { let clothObj = {}; for (let item of clothes) { clothObj[item[1]] = !clothObj[item[1]] ? [item[0]] : [...clothObj[item[1]], item[0]] } return Object.values(clothObj).map(arr => arr.length + 1).reduce((acc, cur) => acc * cur) - 1 } 먼저 옷을 부위(?)별로 정리할 객체(clothObj)를 만든다. clothes 를 순회하며 각 item을 객체에 정리한다. 1번째 요소는 부위이므로 key로 한다. 0번째 요소는 옷 종류이므로 key값..
-
[CodeKata] 프로그래머스: 2.23(화), 메뉴 리뉴얼Algorithm 2021. 2. 23. 15:09
🥋 Ooooth!! (Level 2) orders 각 배열의 조합들 중, course 갯수들에 맞는 조합만을 모아서 반환한다는 생각으로 만들었다. 🧮 풀이 // 조합 함수 function combination(arr, num) { let result = []; if(num == 1) return arr.map(e => [e]); arr.forEach((e,i,array) => { let rest = array.slice(i+1); let combinations = combination(rest,num-1); let combiArr = combinations.map(x => [e, ...x]) result.push(...combiArr); }) return result; } // 문제풀이 함수 functi..
-
[CodeKata] 프로그래머스: 2.22(월), 멀쩡한 사각형Algorithm 2021. 2. 22. 12:37
🥋 Ooooth!! (Level 2) : 멀쩡한 사각형 코드카타는 계속된다! 문제는 많은데 진도가 늦어 이번주부터는 토요일까지 주 6회로 풀려고 한다. 또한, 저번주에 풀이들이 길어지는 것을 느껴, 최대한 지양하고 싶었지만 우선 일단위로 포스팅하는 것으로 조정해보았다. 카카오답게 문제가 매우 길지만, 재귀함수를 통해 괄호쌍을 조정하여 '올바른 괄호 문자열' 로 가공하는 문제이다. 문제의 '용어의 정의' 부분에 로직이 설명되어 있어서, 이를 그대로 코드화하는 데 우선 집중했다. 🧮 풀이 function divider(str) { let compareCount = 1; for (let i = 1 ; i < str.length ; i++) { compareCount = str[i] === str[0] ? co..
-
[CodeKata] 위클리 프로그래머스(2월 3주차)Algorithm 2021. 2. 15. 15:22
🥋 Ooooth!! (Level 2) 코드카타에 들이는 시간이 많아졌지만, 그만큼 풀었을 때 쾌감도 정말 짜릿하다! 당분간 3차 프로젝트를 위한 공부의 기간이기 떄문에, 바이오리듬 유지하면서 오전에 알고리즘에 몰두하도록 해야겠다. 👊 2.15(월) / 멀쩡한 사각형 📜 문제 🧮 풀이 풀이를 설계하는 과정을 먼저 설명해야 코드풀이가 가능할 것 같다. 위 예시는, 8 * 12 박스의 대각선 경우이다. 대각선은 2 * 3 박스를 기준으로 총 4회 반복되었다. 이 4의 의미를 고민했고, 이것이 너비(8)와 높이(12)의 최대공약수 임을 확인했다. (다른 경우로, 5 * 3 이라면 1이 되야겠다.) 대각선 최소단위(너비, 높이를 최대공약수로 나눈)에서 빠진 박스 개수를, 최대공약수 만큼 곱해주면 전체 빠진 박스개..
-
[CodeKata] 위클리 프로그래머스(2월 2주차)Algorithm 2021. 2. 8. 14:25
🥋 Ooooth!! (Level 2) 레벨2 첫 문제부터 쉽지가 않았다. 첫 날 문제에서 1시간 반 정도를 투자해서 풀어낸 것 같다! 조금 시간이 걸리더라도 혼자 힘으로 최대한 풀어보고, 다 푼 뒤에도 관련개념(스택, 큐 등)과 다른 풀이들을 한번씩 보고 넘어가자! 👊 2.8(월) / 다리를 지나는 트럭 📜 문제 🧮 풀이 function solution(bridge_length, weight, truck_weights) { var answer = 0; let waitWeight = truck_weights.slice(); let crossWeight = []; let crossTime = []; while (truck_weights.length !== 0) { crossTime = crossTime.ma..
-
[CodeKata] 위클리 프로그래머스(2월 1주차)Algorithm 2021. 2. 1. 16:31
🥋 Ooooth!! (Level 1) 새벽작업이 많아지면서 10시 기상 약속을 자꾸 못지키고 있다. 내일부턴 점심전 1코드카타를 반드시 하겠다. 다음주부턴 레벨2로 올릴건데, 오전 코드카타부터 밀리게 되면 하루 전체에 차질이 생기므로 2월의 첫날 나와의 약속이다!! 👊 2.1(월) / 2016년 📜 문제 🧮 풀이 function solution(a, b) { const dayArr = ['SUN','MON','TUE','WED','THU','FRI','SAT'] const dayIndex = new Date(`2016-${a}-${b}`).getDay(); return dayArr[dayIndex]; } 요일값이 담긴 dayArr 를 선언한다. 여기서 정답요소를 인덱싱하여 찾을 것이다. dayIndex는..
-
[CodeKata] 위클리 프로그래머스(1월 4주차)Algorithm 2021. 1. 26. 11:12
🥋 Ooooth!! 어제부터 본격적인 독학을 시작하였다. 개인 프로젝트 진행만으로도 빠듯하지만, 부트캠프 바이오리듬을 유지하기 위해 매일 코드카타를 해보려한다. 프로그래머스 코딩 테스트 연습을, 레벨1부터 하루에 1개씩 매일 풀어볼 생각이다!! 빠샤잇!!!!! 👊 1.25(월) / 크레인 인형뽑기 게임 📜 문제 문제를 단순히 설명하자면, moves 배열은 board 이중배열(5x5)에 접근할 열 인덱스가 순서대로 들어있다. board의 해당 열의 최상단(그러니까 행은 0 ~ 4으로 확인) 요소가 0이 아닌 경우 이를 인형뽑기처럼 빼내온다고 생각하면 쉽다. 또한, 이것이 전에 뽑아온 요소와 같은 값인 경우, 이를 우측의 바구니에서 둘 다 제거하고 그 숫자만큼 result를 더해주면 된다. 🧮 풀이 func..