반응형

알고리즘 53

백준 16928: 뱀과 사다리 게임 - javascript(bfs)

문제 출처 https://www.acmicpc.net/problem/16928 정답 풀이 베베 꼬아서 생각했던 문제였는데, 사실 간단하다.  기존에는 최대한 사다리를 타고 가게 하면서, 뱀을 피하면서 ~ 아무것도 해당되지 않을 때는 주사위로 이동하면서 ~~ ... 그것이 아니라 queue에다가 현재 위치 = 1주사위 던진 횟수 = 0 을 먼저 넣는다.  그리고 주사위를 돌리는 거다 !! 1부터 6까지 ! 그때의 next position 이 나오는데 => 사다리가 잇다면 next position을 사다리로 이동한 결과를 넣어주고 => 뱀이 있다면 next position을 내려간 이동 결과를 넣어준다.  이를 위해서 사다리와 뱀 좌표는 map 객체로 관리한다.  이걸 계속하다가 위치가 100이상인 점이 나..

프로그래머스: [PCCP 기출문제] 1번 동영상 재생기 - javascript(단순 구현)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/340213 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 정답 풀이 단순 구현 문제이고, commands 반복문이 끝난 시간에도 오프닝 구간인지 확인해주는 것 정도만 신경써주면 된다. 정답 코드 function solution(video_len, pos, op_start, op_end, commands) { pos = transTime(pos) video_len = transTime(video_len) op_start = tra..

백준 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..

삽입 정렬 알고리즘

삽입정렬 - 각 숫자를 적절한 위치에 삽입하는 방법 - 필요한 때만 위치를 바꾼다. (선택 정렬과 버블정렬보다 더 빠름) - 시간 복잡도 O(N^2)- 기본적으로 i이전의 값들이 정렬이 되어있다고 가정- 특정한 경우에는 굉장히 빠르게 작동   - 거의 정렬된 상태에 한해서는 어떤 알고리즘보다 빠름 정리) 시간복잡도 O(N^2)를 가지는 정렬 알고리즘 : 선택 정렬, 버블 정렬, 삽입 정렬  내가 작성한 코드 function insertSort(arr){ for(let i=1; i value){ let temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; j-- }..

버블 정렬 알고리즘

현재 값과 다음값을 비교해서 더 큰 값을 뒤로 배치한다. => 이 과정을 반복하다 보면  가장 큰 값인 5가 맨 뒤로 가게 됐다. 이 과정을 반복해보자가장 큰 값인 4가 맨 뒤로 가게 됐다. 이 과정을 반복해보자.  이 쯤 눈치를 챘는가? 배열 전체를 통해 숫자를 비교하는 횟수가 점점 줄어들고 있다. 이유) - 한번 배열 훑는 과정거칠 때마다 가장 큰 값이 맨 뒤에 고정된다. => 그러니, 그 숫자 이전까지만 배열을 훑어주면 된다.  특징 - 시간 복잡도는 O(N^2)- 선택 정렬 알고리즘도 시간 복잡도는 O(N^2)이지만, 버블 정렬 알고리즘 수행시간이 더 오래 걸린다. => 이유: 버블 정렬은 매 순간 숫자들의 위치를 이동시키기 때문이다. 선택 정렬은 전체 배열 훑은 다음에 가장 작은 값을 맨 앞에 ..

선택 정렬 알고리즘

선택 정렬 알고리즘 - 정렬 알고리즘 중 하나. - 배열을 반복적으로 순회하여 가장 작은(혹은 가장 큰) 요소를 찾아 맨 앞의 요소와 교환하는 방식으로 정렬합니다. 선택 정렬 알고리즘 설명첫 번째 위치에 대해:배열에서 가장 작은 요소를 찾아 첫 번째 요소와 교환합니다.두 번째 위치에 대해:첫 번째 요소를 제외한 나머지 배열에서 가장 작은 요소를 찾아 두 번째 요소와 교환합니다.이 과정을 마지막까지 반복:배열 전체가 정렬될 때까지 이 과정을 반복합니다.  선택 정렬 알고리즘 구현 function selectSort(arr){ for(let i=0; i arr[j]){ min = j; } } let temp = arr[i]; ..

프로그래머스: 합승 택시 요금 - javascript(플로이드 와샬 알고리즘)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/72413 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이 힌트  플로이드 와샬 알고리즘을 사용하면 참 간단한 문제다 !  코드는 간단한데, 주석을 작성하느라 좀 길어졌다.  정답 풀이 코드 function solution(n, s, a, b, fares) { //해당 node => node 로 향하는 최소 비용을 갱신할 2차원 배열 생성 const board = Array.from({length: n}).map(() => new A..

백준 16401: 과자 나눠주기 - javascript(이분 탐색)

문제 출처 https://www.acmicpc.net/problem/16401 16401번: 과자 나눠주기첫째 줄에 조카의 수 M (1 ≤ M ≤ 1,000,000), 과자의 수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 과자 N개의 길이 L1, L2, ..., LN이 공백으로 구분되어 주어진다. 과자의 길이는 (1 ≤ L1, L2, ..., LN ≤ 1,www.acmicpc.net문제명절이 되면, 홍익이 집에는 조카들이 놀러 온다. 떼를 쓰는 조카들을 달래기 위해 홍익이는 막대 과자를 하나씩 나눠준다.조카들이 과자를 먹는 동안은 떼를 쓰지 않기 때문에, 홍익이는 조카들에게 최대한 긴 과자를 나눠주려고 한다.그런데 나눠준 과자의 길이가 하나라도 다르면 조카끼리 싸움이 일어난다. 따라서..

백준 24445: 알고리즘 수업 - 너비 우선 탐색2

문제 출처 https://www.acmicpc.net/problem/24445 24445번: 알고리즘 수업 - 너비 우선 탐색 2 첫째 줄에 정점의 수 N (5 ≤ N ≤ 100,000), 간선의 수 M (1 ≤ M ≤ 200,000), 시작 정점 R (1 ≤ R ≤ N)이 주어진다. 다음 M개 줄에 간선 정보 u v가 주어지며 정점 u와 정점 v의 가중치 1인 양 www.acmicpc.net 문제 오늘도 서준이는 너비 우선 탐색(BFS) 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. N개의 정점과 M개의 간선으로 구성된 무방향 그래프(undirected graph)가 주어진다. 정점 번호는 1번부터 N번이고 모든 간선의 가중치는 1이다. 정점 R에서 시..

백준 24444: 알고리즘 수업 - 너비 우선 탐색1

문제 출처 https://www.acmicpc.net/problem/24444 24444번: 알고리즘 수업 - 너비 우선 탐색 1 첫째 줄에 정점의 수 N (5 ≤ N ≤ 100,000), 간선의 수 M (1 ≤ M ≤ 200,000), 시작 정점 R (1 ≤ R ≤ N)이 주어진다. 다음 M개 줄에 간선 정보 u v가 주어지며 정점 u와 정점 v의 가중치 1인 양방 www.acmicpc.net 문제 오늘도 서준이는 너비 우선 탐색(BFS) 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. N개의 정점과 M개의 간선으로 구성된 무방향 그래프(undirected graph)가 주어진다. 정점 번호는 1번부터 N번이고 모든 간선의 가중치는 1이다. 정점 R에서 ..

반응형