본문 바로가기

반응형

ProgramSoliving

(197)
프로그래머스 : 보석 쇼핑 const isTrue = (count, cnt) => { for(let i=0;i
프로그래머스 : 다단계 칫솔 판매 (JavaScript) HashMap으로 판매자들을 number 로 변경, 그 후 배열로 부모 관계 데이터 표현 DFS 상위에 판매결과값 전달. const hash = new Map(); var edge; var answer; const DFS = (num, money)=> { const next = edge[num]; const nextMoney = Math.floor(money * 0.1); const currentMoeny = money - nextMoney; answer[num] += currentMoeny; if(next !== null && nextMoney!== 0) DFS(next, nextMoney); } function solution(enroll, referral, seller, amount) { const..
프로그래머스 : 표 편집 (JavaScript) https://programmers.co.kr/learn/courses/30/lessons/81303 코딩테스트 연습 - 표 편집 8 2 ["D 2","C","U 3","C","D 4","C","U 2","Z","Z"] "OOOOXOOO" 8 2 ["D 2","C","U 3","C","D 4","C","U 2","Z","Z","U 1","C"] "OOXOXOOO" programmers.co.kr JavaSciprt로 양방향 연결리스트 구현 후 처리해주면 쉽게 풀 수 있습니다. var list; var stack = []; var answer; const Delete = (k) => { stack.push([k,list[k][0],list[k][1]]); let pre = list[k][0]; let ne..
프로그래머스 : 블록게임 JavaScript 논리흐름이 틀리지 않았는데 계속 틀렷다 나와서 코드만 몇번 본줄 모르겠다.. 당연히 실수가 없을거라 생각했던 함수에 +가 되야할게 -가 박혀있었다.. 그런데도 예제가 너무쉽게통과해서 의심할 수 없는 수준.. 문제풀이 1. 도형 12가지중 위와 같은 뒤집어진 모양은 위에서 블록이 내려오기에 제거할 수가없다. 따라서 블록으로 제거할 수 있는 도형은 5개로 제한된다. 2. 앞선 순서로 제거하지 못했지만 다음 순서에서 제거되서 앞선 순서의 도형이 제거되는 경우가있다. (이경우에는 다시 한번더 탐색) 3. 우선적으로 제거할 블록위에 다른 블록이 있으면 제거할 수 없지만. 직각 사각형의 조건으로 특정 블록의 x위치 위에는 탐색하지 않아도 된다. 아래의 경우에는 왼쪽 첫번째 순서의 위로 있는 도형은 생각안해도 된다...
프로그래머스 : 동굴탐험 JavaScript class Queue { constructor() { this._arr = []; } push(value) { this._arr.push(value); } pop() { return this._arr.shift(); } isEmpty() { return this._arr.length === 0; } } var Edge; var beforePath; var visit; function solution(n, path, order) { Edge = Array.from({length: n},() => []); beforePath = Array(n); visit = Array(n).fill(false); for(let o of order) { beforePath[o[1]] = o[0]; } if(beforePat..
프로그래머스 : 가사검색 JavsScript 자료구조 : 트라이 1년전 정리했던 자료구조이다. Java로 짜여져있는 내코드를 참조했다. https://redbinalgorithm.tistory.com/167?category=880023 트라이(Trie) : JAVA / 백준 5052 트라이 알고리즘 일반 적인 정수들은 O(1) 시간내에 비교가 가능합니다 . 1==1 ,123>4 처럼 단순연산으로 접근 할 수 있습니다. 하지만 String 같은경우에는 "ABC" == "ABCD" 를 고려하기 위해서는 최대 문 redbinalgorithm.tistory.com 트라이 알고리즘은 특정 자료안에 key가 존재하는가 여부를 O(NM) 안에 알 수 있는 가장 빠른 자료구조이다(N은 쿼리수) 이러한 특성때문에 해당 프로그래머스 문제에서도 쿼리수가 많은 경우에도..
프로그래머스 : 무지의 먹방 라이브 JavaScript 각각의 들어있는 음식의 양을 막대형 그래프로 표현해 본다면 O O O O O O 이것을 크기가 작은 순으로 정렬하다면 O O O O O O 큰것 부터 먹더라도 k값이 전체 음식의 수보다 앞선다면은 사이클 한번이 돌고나서는 남은 K수는 K-len(음식의 수)가 될것이고 그래프의 모양은 다음과 같이된다. O O O 이것에서 아이디어를 얻어서 문제를 풀면 다음과 같은 코드가 된다. 추가팁으로는 1~n 차례대로 음식을 순회하기 때문에 index순서대로 뽑아야한다 (문제에서는 다음 음식에 가장 많이 남은 음식을 선택한다고했다. 예를들어 5번 음식을 뽑앗으면 6~N, 1~4번중 가장 많이 남은것을 뽑는 다는 뜻 따라서 다음과 같이 index로 정렬하면 정답이 나온다.) function solution(food_ti..
프로그래머스 : 단어 퍼즐 JavaScript 다익스트라로 접근하면 편하다. const INF = 987654321; function solution(strs, t) { const n = t.length; var digit = Array.from({length: n},() => INF); const q = []; q.push([-1,0]); while(!(q.length === 0)) { const [index, count] = q.shift(); for(let str of strs) { let len = str.length; if(index + 1 + len > n ) { continue; } const subStr = t.substring(index + 1 ,index + 1 + len); if(str === subStr && digit[inde..

반응형