본문 바로가기

분류 전체보기

(5)
백준 알고리즘 - 2156 - 포도주 시식 - DP 문제 풀이, 반례 모음 문제 링크: https://www.acmicpc.net/problem/2156 난이도: 실버 1 아직 나에게는 너무x100 이해하기 어려운 DP.. 패스트캠퍼스 나동빈님 강의에서 i번째 마시기, i번째 안 마시기에서 힌트를 얻고 풀었습니다. 1. dp[1] = wines[1] 2. dp[2] = wines[1] + wines[2] 3. dp[3] = max(dp[2], dp[1]+wines[3], wines[2]+wines[3]) 4. dp[4] = max(dp[3], dp[2]+wines[4], dp[1]+wines[3]+wines[4]) ... 이후 반복 const wines = `${require('fs').readFileSync('/dev/stdin')}`.trim().split(/\n/).map..
프로그래밍/알고리즘 게임 - Baba Is You - 1~7 공략/힌트 1. Where Do I Go? 힌트: [대상] + IS + STOP 일 때, 대상은 멈춤 상태가 되며, 통과할 수 없습니다. ※ 풀이 영상은 스포일러가 있으니 시청에 주의해주세요. 2. Now What Is This? 힌트: [대상] + IS + WIN 일 때, 대상에 YOU가 도달하면 승리합니다. (스테이지 통과) ※ 풀이 영상은 스포일러가 있으니 시청에 주의해주세요. 3. Out Of Reach 힌트: [대상] + IS + SINK 일 때, 대상과 겹쳐진 개체가 있으면 해당 위치의 대상+개체 모두 사라집니다. ※ 풀이 영상은 스포일러가 있으니 시청에 주의해주세요. 4. Still Out Of Reach 힌트: [대상] + IS + DEFEAT 일 때, YOU가 대상에 닿으면 죽습니다. (스테이지 실..
백준 알고리즘 - 1697 - 숨바꼭질 - 그래프 문제 풀이 문제 링크: https://www.acmicpc.net/problem/2667 난이도: 실버 1 일종의 최단 거리 찾기 문제로, BFS가 권장됩니다. -1, +1, x2 세 가지 조건으로 방문한 노드를 1차원 배열에 기록하여 완전탐색을 하다가, K 노드에 몇 번에 걸쳐 도달했는지 출력하면 됩니다. 원리는 간단하지만, 어떤 조건식을 추가하느냐에 따라 성능이 많이 달라지므로 주의가 필요합니다. 저는 5번째 시도에서 성공 후 코드를 리팩토링 하며 9번 더 시도하게 되었습니다. 참고할만한 포인트와 함께 몇 가지 과정을 소개해보겠습니다. const visited = []; let queue = []; let answer = n === k ? '0' : undefined; bfs(n, 0); while (queue..
백준 알고리즘 - 16173 - 점프왕 쩰리 (Small) - 그래프 문제 풀이 문제 링크: https://www.acmicpc.net/problem/16173 난이도: 실버 4 끝점 -1에 도달할 수 있는지, 없는지를 알기 위해 모든 이동 경로를 탐색해야 하므로 그래프+브루트포스 방법을 써야 했습니다. 그래프 문제치고 난이도가 낮은 문제로, 상하좌우 네 방향이 아닌 오른쪽 또는 아래로만 이동할 수 있고 무조건 0, 0에서 시작하는 조건이어서 단순하게 풀 수 있었습니다. 끝점에 도달한다는 특수한 상황일 때 출력 값이 다르므로, answer의 디폴트를 Hing로 두고 DFS 로직을 구현했습니다. let [size, ...map] = `${require('fs').readFileSync('/dev/stdin')}`.trim().split(/\n/); size = +size; map = ..
프로그래머스 알고리즘 - 17682 - 다트 게임 - 2018 KAKAO BLIND RECRUITMENT 문제 풀이 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/17682 난이도: Lv.1 프로그래머스 17682번 알고리즘은 2018년 카카오 블라인드 채용의 테스트 문제였습니다. 1에서 10까지의 숫자와 S, D, T, *, #으로 이루어진 문자열을 받아 조건에 따라 연산하면 됐습니다. S, D, T와 *, #은 하나의 숫자에 중첩될 수 있었고, * 연산자의 경우 현재 숫자와 직전에 계산된 점수에 적용되어야해서, 하나의 sum 변수에 계산하기보다는 이전의 연산 결과 히스토리를 가지고 있어야 했습니다. score 배열을 만들어 숫자면 push, 연산자면 pop을 하여 계산 후 다시 push 하는 식으로 점수를 계산했습니다. function solut..