알고리즘

문제 설명 https://www.acmicpc.net/problem/18111 18111번: 마인크래프트 팀 레드시프트는 대회 준비를 하다가 지루해져서 샌드박스 게임인 ‘마인크래프트’를 켰다. 마인크래프트는 1 × 1 × 1(세로, 가로, 높이) 크기의 블록들로 이루어진 3차원 세계에서 자유롭게 www.acmicpc.net 문제 풀이 방법 이 문제는 기본적으로 완전탐색 알고리즘의 일종인 브루트포스 문제이다. 각 기준 높이에 맞는 시간과 최대 높이를 측정하여 정답을 도출한다. 블럭의 최대 높이는 256까지 이므로 반복문을 이용해 0부터 256까지의 기준 높이를 설정하며 각 블럭에서의 기준 높이까지 맞추기위해 필요한 제거 횟수와 채움 횟수를 측정, 제거한 블럭과 기존에 갖고있던 블럭의 수가 넣어야 하는 블럭..
문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/142085 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 방법 이번 문제는 최소 힙을 적용한 우선순위 큐를 이용해 풀어야 했던 문제이다. 나는 정렬을 이용해 웨이브가 가장 큰 순서대로 해결하려 했다. 하지만, 이렇게 하게 되면 초반에 작은 웹이브들의 합이 갖고있는 병사의 수를 넘는 경우는 처리하지 못하기에 포기했다. 그렇다면 큰 웨이브는 무적권을 사용한다 치고, 작은 수만 골라 문제를 풀어야 한다는 것이다. 이진 탐색을 통해 웨이..
문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/12978 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 방법 이 문제는 특정 노드에서 다른 모든 노드로 가는 최단 경로를 구할 수 있는 다익스트라 알고리즘을 이용하는 문제이다.(다스트라 알고리즘은 추후 정리할 것이다) 1번(특정 노드)에서 출발해 각 번호까지의 코스트를 적립해 주어진 제한 코스트를 넘지 않는 번호의 갯수를 구하는 문제인데, 이 문제에서 BFS와 우선순위 큐를 이용해 다익스트라 알고리즘을 구현했다. 순수 BFS는 가..
· CS
1. 정의 우선 DFS와 BFS의 정의부터 간략하게 다시 알고 가도록 하자. DFS 깊이 우선 탐색이라는 이름에 맞게 탐색할 노드를 깊이를 우선으로 탐색하는 알고리즘이다. DFS의 구현은 Stack 또는 재귀적인 특징을 이용해 구현한다. BFS 너비 우선 탐색은 넓게 바로 아래 하위 노드를 모두 넓게 탐색한 뒤 그 아래의 노드들을 탐색하는 알고리즘이다. 큐를 이용해 탐색을 관리한다. 2. 구분 방법 그렇다면, 실제 코테나 문제를 해결할 때 무엇을 언제 사용해야하나? 우선 그 문제를 분석해봐야한다. 그래프 탐색에서 모든 정점을 방문하는가? DFS와 BFS 둘 다 가능하다. 경로의 특징을 저장 혹은 조합, 순열을 구해야 하는 문제인가? 고로타면 DFS를 이용하는게 유리하다. 최단 경로, 최단 거리를 구해야 ..
문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 이번 문제는 큐를 이어붙여 투포인터 알고리즘을 이용해 풀었다. 시작포인터와 끝 포인터는 각각 0과 첫번째 큐의 끝으로 설정해 두었다. 그 이유는 한개의 큐의 합이 전체 큐의 합의 절반이 되는 것을 감지해야하기 때문에 첫번째 큐의 합을 기준으로 크다면 lp에 해당하는 수를 빼고, 작다면 rp에 해당하는 수를 더해주면서 문제를 풀었다. 코드 const solution = (qu..
· CS
슬라이딩 윈도우(Sliding Window) 알고리즘 고정된 윈도우(특정 범위를 나타내는 말)의 내부 요소값을 이용하여 문제를 풀이하는 알고리즘 위의 사진에서는 윈도우의 범위가 5이다. 첫번째는 1, 3, 2, 6, -1 이 윈도우 내에 있고 두번째에는 3, 2, 6, -1, 4 가 윈도우 내에 존재한다. 첫번째에서 두번째로 넘어갈 때, 맨 앞에 위치한 1은 윈도우 내에서 제거되고, 1을 제외한 3, 2, 6, -1 은 재사용되며 그 뒤로 새로운 요소인 4가 추가가 된다. 슬라이딩 윈도우 알고리즘는 재사용이 중요하다고 생각한다. 고정된 범위를 가지고 움직이는 윈도우 내에 있는 요소들을 움직이는 만큼 앞에 있는 요소를 제거하고 나머지 값은 재사용하며 그 뒤에 새로운 값들을 배정해 사용한다. 시간복잡도 : ..
58청춘
'알고리즘' 태그의 글 목록