반응형

전체 글 307

프로그래머스: 공통 부분 문자열 - 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('?','.') + '$' ..

백준 9251 : LCS - javascript(문자열, dp)

문제 출처 https://www.acmicpc.net/problem/9251 정답 풀이 - 두 문자열의 공통 부분 수열 중 가장 긴 부분 수열을 찾는 것. - 부분 수열은 원래 문자열에서 문자를 순서를 유지한 채 일부를 선택하여 만든 문자열이다.  DP 접근 방법 - 두 문자열의 각 문자 쌍을 비교하면서 최장 공통 부분 수열을 점진적 계산 - 2차원 배열 사용 - 각 셀 DP[i][j]는 첫번째 문자열의 첫 i개 문자와 두번째 문자열의 첫 j개 문자를 비교했을 때의 LCS 길이를 나타낸다.  테이블 초기화 - DP[i][0]와 DP[0][j]는 0을 초기화한다. 왜냐하면 공백과 어떤 문자열을 비교하면 공통 부분 수열의 길이는 항상 0이다.  점화식 - str[i-1] 과 str[j-1]이 같으면 dp[i..

프로그래머스: 미로 탈출 명령어 - 실수 축제 (그래프 탐색에서 DFS와 BFS의 사용 )

아래 세가지 이유에 대해 알아보자.  - 그래프 탐색에서 DFS와 BFS 차이점- DFS: 스택, BFS:큐를 사용하는 이유 - 각 기법을 언제 사용하는지  ## DFS와 스택 dfs는 그래프 탐색 시 "한 방향으로 끝까지 탐색하고, 더이상 갈 곳이 없으면 되돌아와서 다른 경로를 탐색하는" 방법이다.이 방법은 재귀적인 탐색을 요구한다. ### 스택을 사용하는 이유 - LIFO(Last In First Out) : 스택은 마지막에 삽입된 요소를 가장 먼저 꺼내는 자료구조다. dfs에서는 가장 최근에 발견된 노드를 먼저 탐색해야 하기 때문에, 노드를 탐색하면서 경로를 쌓아두었다가 더이상 갈 곳이 없을 때 되돌아가는데 적합하다.   dfs에서 A 에서 출발해서 E를 찾는 과정을 살펴보자. A에서 출발하여 B로..

[linux] discord 최신 버전으로 자동 업데이트 명령어

와 정말 디스코드는 update를 많이 한다. 매번 파일을 설치하고, 실행하는 번거로움이 있어는데 이제서야 자동화 하려고 한다. (나도 대단하다... 지금껏 수동으로.. )Snap 패키지를 이용하자  1. Snap 패키지 관리자를 이용한 Discord 설치 sudo snap install discord 2. Snap 패키지 업데이트 (자동 업데이트 설정이 이미 기본으로 되어 있다) Snap 패키지는 자동으로 업데이트되며, 별도로 업데이트를 설치할 필요가 없다.그러나 수동으로 업데이트를 확인하고 싶다면 아래 명령어를 사용하자. sudo snap refresh

Linux 2024.08.28

백준 10775 : 공항 - javascript(그리디 쌈박한 문제, Union-Find)

문제 출처 https://www.acmicpc.net/problem/10775 정답 풀이  사람들 천재야? 어떻게 이런 생각을 했는지 싶다 그리디 참 쌈박한 문제다. 인정 ! - 그리디 알고리즘 - 유니온 파인드 자료구조 를 활용해서 풀 수 있다.  각 게이트는 비행기를 수용할 수 있고, 가장 큰 번호의 게이트에 비행기를 도킹시켜야 최대한 많은 비행기를 도킹시킬 수 있다.  1. Union-Find 자료구조- find(x): x가 속한 집합의 대표자를 찾는다. 경로 압축을 사용하여 효율적으로 찾는다. - union(x,y): x와 y를 같은 집합으로 합친다.   2. 그리디 - find(gate) : 각 비행기에 대해, 해당 비행기가 도킹할 수 있는 가장 큰 번호의 게이트를 찾는다 - union(avai..

프로그래머스: 미로 탈출 명령어 - javascript(dfs 그래프, 맨해튼 거리)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/150365 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 정답 풀이 DFS 알고리즘을 활용해서 미로에서 탈출하는 경로를 찾는 문제. - k번의 이동 - 사전순으로 가장 빠른 경로 반환  1. 맨해튼 거리 계산 - 출발점에서 목표점까지의 맨해튼 거리 계산 - 만약, k이동 횟수가 이 거리보다 작거나, 맨해튼 거리와 k의 홀짝성이 다르면 도달 할 수 없으므로 => impossible  2. dfs - 스택을 사용하여 dfs 구현 - 후입선출방식, ..

백준 1300: k번째 수 - javascript(이진탐색)

문제 출처 https://www.acmicpc.net/problem/1300 정답 풀이  일단 이 논리를 알고가자 주어진 배열에서 8이하인 수가 몇개 있을까?   결론부터 말하면 8이라는 숫자를 각 배열의 idx값으로 나는 몫을 다 더한 개수가 된다. idx가 1인 배열을 봐보자. 8/1을 하면 몫이 8이 된다. 그런데 애초에 가로 배열 크기가 4가 최대니까 값이 4가 된다. ...idx가 4인 배열을 봐보자. 8/4를 하면 몫이 2가 된다. 실제로 8이하인 수의 개수는 4와 8 두개이다.   왜 이런 논리가 들어맞는걸까? 사실 각 idx로 나눠준 것은 각 가로 배열의 첫번째 숫자를 의미한다. idx === 배열 첫번재 숫자가 같다.   그리고, 해당 가로 배열을 보면, 해당 숫자만큼 계속 커지는 규칙을..

프로그래머스: 미로 탈출 명령어 - 실수 축제 (switch 오타)

문제 코드  에러 발생 메시지  문제 발생 이유 switch 문을 오랜만에 써서 내가 문법을 잘못 알았나? 하는 두려움에 오타가 있는지는 확인하지 않았다. 보니 오타가 있다. 그리고 생각해봐라. 문법이 문제라면 return 'l' 부분이 아니라 return 'd' 부분부터 에러가 났겠지 !!  해결코드

반응형