반응형

2024/09 39

백준 14725: 개미굴 - javascript(문자열, 트리)

문제 출처 https://www.acmicpc.net/problem/14725 정답 풀이 문자열 문제를 풀고 싶었는데, 어쩌다 보니 트리 알고리즘을 연습하게 됐다. 뭐, 잘됐다. 트리 문제는 한번 풀어본 것 같다..;; (아무래도 양심이 없다)  트리 문제는 언제나 간단하게 생각하면 된다. - 트리를 어떻게 생성할까? - 트리를 어떻게 탐색할까?  이 두개만 생각해주면 된다.그러다 보니, 아래와 solution 함수가 쉬워진다. 생성은 insert 를 통해, 탐색은 print를 통해 구현하면 된다.   ## insert path는 문제에서 주어진 값이 차례대로 들어갈 것이다. 2 B A4 A B C D2 A C 내 전체 코드를 보면, 앞에 숫자는 slice(1)를 통해 없앴고, 배열로 구현해놨다. 아래와..

백준 2293: 동전 1 - javascript(dp)

문제 출처 https://www.acmicpc.net/problem/2293 정답 풀이 알아보니, 이 문제는 js언어로 메모리 초과가 나는 문제인 것 같다.  이 분의 풀이를 보면 이해가 더 쉬울 것 같다. https://www.youtube.com/watch?v=LBOQikSpfNg 정답 코드 const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'); const [n,k] = input.shift().split(' ').map(v => +v); const arr = []; for(let i=0; i틀린 코드 완전탐색의 방법밖에 떠오르지 않았다.. 메모리 초과... 가 될 걸 알았지만 작성한 이유는, 요즘에는 ..

백준 2638: 치즈 - javascript(bfs)

문제 출처 https://www.acmicpc.net/problem/2638 정답 풀이 정답 코드 const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');const [n, m] = input.shift().split(' ').map(v => +v);const arr = [];for (let i = 0; i +v));}function solution(n, m, graph) { let answer = 0; bfs(n, m, graph); // 초기 외부 공기(-1)로 표시 while (true) { let hasCheese = false; // 치즈가 남아있는지 확인 l..

프로그래머스: 블록 이동하기 - javascript(bfs 끝장내기)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/60063 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 정답 풀이 그래프 최단 경로 ? bfs 알고리즘을 사용해야 되는 것은 모두 다 알거다. 그런데 구현하기가 어려웠는데, 그 이유는 함수화 하지 않아서 solution 기본 함수가 복잡해진 탓이라고 생각한다.  또, 회전하는 경우를 가로 => 세로 인 것과 세로 => 가로를 구분해줘야 한다.  또 이미 방문한 위치는 Set 객체를 이용하면 된다. 정답 코드function solution(boa..

백준 12865 : 평범한 배낭 - javascript(dp)

문제 출처 https://www.acmicpc.net/problem/12865 정답 풀이 풀이 보니까, dp로는 유명한 문제라는데 아직도 못 푸는 나 자신 머리 한대 때리고 시작하자.  이해하면 코드는 간단하나, 이해하기 생각보다 빡셌다. 다른 분들의 블로그를 봐도 잘 이해가 안갔고, 그래서 내가 이해한 방식대로 글을 작성해볼 예정이다.  ## dp 그래프 생성 아래와 같이 2차원 그래프 dp를 생성해줄 것이다. 세로 의미: 각 물건의 무게와 가치 가로 의미: 준서가 버틸 수 있는 무게  그렇다면 dp 그래프의 의미는 어떻게 될까? 각 물건을 넣고, 안넣고에 따라서 + 준서의 배낭 각 무게에 따라의 '가치'를 계속 update 해줄 것임. (이해가 안가도 아래 쭉 예시를 읽어보자 !) ## 초기화 아래 ..

백준 16234: 인구 이동 - javascript(bfs)

문제 출처 https://www.acmicpc.net/problem/16234 정답 풀이 bfs 알고리즘을 활용했다.  - 일단 주어진 board의 전체를 돈다.   - 이때 한번 방문한 위치는 안간다.  - 모든 board를 다 돌았을 때 그 어떤 값도 변경되지 않는다면 반복문에서 break를 한다.  - 한번 방문한 곳에서 bfs 함수를 돌린다.    - 이때 arr 배열에 조건에 맞는 (L 이상 R이하 차이) 위치들을 push 한다.  - arr의 위치들의 board 값을 다 더하고 평균을 내서 새롭게 board에 값을 넣어준다.  정답 코드 const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n')cons..

백준: 인구 이동 - 실수 축제 (split, i 사용, queue 초기 값 설정, checked )

실수1. split(' ') 작성 안함.백준에서는 치명적인 실수였다.  실수2. 변수의 재사용 (x,y, i, d) 진짜 이런 실수는 하면 안된다. 매개변수를 i,j 로 받아놓고, 4가지 방향으로 뻗어줄 때 변수를 i로 작성했었다.  이제 매개변수로 받는 값은 x,y로 해야한다. 또 방향 전환 하는 변수는 d로 설정하자. 이래야 다음에는 실수를 하지 않을 것 같다.  실수3. queue의 초기값에 대하여queue의 초기값에 대하여 설정해야 할 것들 checked  나 arr에 push 하기 이런건 해당 부분에서 처리해주자. 실수4. checked - checked를 true로 설정해야 한다. 이걸 계속 false 로 했었음;;

프로그래머스: 공통 부분 문자열 - javascript(문자열, dp)

문제 출처 https://www.acmicpc.net/problem/5582 문제 풀이  dp 2차원 그래프를 그린다. str1 = 'GBCDFE'str2 = 'ABCDEF'인 상황이다.  각각 str의 길이를 이렇게 설정해주자. let n =  str1.length let m = str2.length  우리는 dp를 이용할 건데 dp 2차원 그래프를 생성하자. 세로:n+1  ,가로: m+1 길이를 가진 그래프일 것이다  모두 0으로 채울 것이다.  아래 그림과 같이 특히 idx 0은 무조건 0인데 무슨 의미일까? ''과 'ABCDEF'를 비교하면, 같은 부분이 없고, 'GBCDFE'와 ''를 비교하면, 같은 부분이 없다는 의미다.  아래 분홍색 부분은 어떤 것을 뜻하는가? 'GBCDFE'에서의 'GBC..

프로그래머스: 가사 검색 - javascript(이진탐색, 그리디)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/60060 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이 효율성을 생각하지 않는다면, 아래 코드가 간결할 수 있겠다. function solution(words, queries) { let answer = new Array(queries.length).fill(0) queries.forEach((query, idx) => { let q = '^'+ query.replaceAll('?','.') + '$' ..

반응형