알고리즘/programmers 270

[Programmers 코딩테스트 고득점 Kit] 섬 연결하기

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/42861 코딩테스트 연습 - 섬 연결하기 4 [[0,1,1],[0,2,2],[1,2,5],[1,3,1],[2,3,8]] 4 programmers.co.kr 유니온 파인드를 사용하는 문제였습니다. 알고리즘은 아래와 같습니다. 1. 간선들을 가격 기준으로 오름차순 정렬을 해줍니다. 2. 정렬된 간선들을 모두 순회하면서 같은 그룹이 아니라면 섬을 연결하고 같은 그룹으로 만들어줍니다. 2.1 같은 그룹으로 만들어줄 때 가격을 answer에 더해줍니다. 3. 2번 과정이 끝나면 answer를 반환해줍니다. 개발환경:Visual Studio 2017 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

[Programmers 코딩테스트 고득점 Kit] 구명보트

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/42885 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr 투 포인터를 이용하는 그리디 알고리즘 문제였습니다. 알고리즘은 아래와 같습니다. 1. 이인용 보트이기 때문에 최대한 짝을 맞춰서 보내야 합니다. 2. 즉, {그나마 가벼운 사람, 그나마 무거운 사람} 페어로 보내야 최대한 많은 짝을 이룰 수 있습니다. 3. 따라서, 몸무게를 기준으로 정렬을 진행한 뒤, 하나의 포인터는..

[Programmers 코딩테스트 고득점 Kit] 큰 수 만들기

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 알고리즘은 아래와 같습니다. 1. 우선, 정답을 앞에 k개의 숫자를 제거한 숫자로 세팅합니다. 2. 0 ~ [k - 1] 번째 숫자 중 answer 문자열의 앞쪽에 포함된 숫자보다 큰 숫자가 있을 수 있습니다. 2.1 해당 케이스가 성립할 경우 바꿔줍니다. 2.2 문자열의 앞쪽에 포함된 숫자가 해당 숫자보다 클 경우 다음 숫자와 비교해줍니다. 3. 2번 과정을 0 ~ [k - 1] 번째 숫자까지 적용해줍니다. 4. 정답을 반환합니다. 개발환경:Visual Studio 2017 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

[Programmers 코딩테스트 고득점 Kit] 조이스틱

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/42860 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr ZZAAAZ와 같은 케이스처럼 오른쪽으로 갔다가 왼쪽으로 돌아가는 케이스도 있으므로 단순 한 방향만 정해서 풀 수 없는 문제였습니다. 알고리즘은 아래와 같습니다. 1. name과 똑같은 길이의 A로만 이루어진 문자열 temp를 선언합니다. 2. 동시에 왼쪽과 오른쪽으로 i칸을 움직이며 temp[i]와 name [i]가 다를 ..

[Programmers 코딩테스트 고득점 Kit] 체육복

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr 체육복을 우선 왼쪽에 있는 사람으로부터 빌리는 것을 시도한 뒤 불가능하다면 오른쪽에 있는 사람으로부터 빌리는 것을 시도하도록 코드를 작성했습니다. 개발환경:Visual Studio 2017 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

[Programmers 코딩테스트 고득점 Kit] 이중우선순위큐

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/42628 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr 문제에서는 우선순위 큐 두 개를 사용하는 것을 원한 듯 하지만 set 자료구조를 이용하면 쉽게 풀 수 있는 문제였습니다. 알고리즘은 아래와 같습니다. 1. set을 생성하고 명령어가 I인 경우 set에 숫자를 삽입합니다. 2. 명령어가 D인 경우 아래와 같은 절차를 따릅니다. 2.1 최댓값을 삭제할 경우 set의 제일 뒤 숫자를 삭제하고 2.2 최솟값을 삭제할 경우 set의 제일 앞 숫자를 삭제합니다. 3. operations 벡터를 전부 순회할 동안 1번과 2번 과정을 반복하고 4. set이 비어있을 경우 {0, 0},..

[Programmers 코딩테스트 고득점 Kit] 디스크 컨트롤러

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/42627 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr 힙과 정렬을 이용하여 푸는 문제였습니다. 알고리즘은 아래와 같습니다. 1. 작업을 시간순으로 정렬한 벡터를 생성해주고, 작업 소요시간이 짧은 순서가 우선순위를 갖는 힙을 생성해줍니다. 2. 초를 나타내는 sec 변수를 정의하고 0으로 초기화한 뒤, 2.1 1번에서 생성한 벡터 내 sec 이하인 작업들을 1번에서 생성한 pq에 넣어줍니다. ..

[Programmers 코딩테스트 고득점 Kit] 더 맵게

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 최소 힙을 이용하여 푸는 문제였습니다. 알고리즘은 아래와 같습니다. 1. 최소 힙을 생성해주고 scoville 벡터에 있는 값들을 전부 넣어줍니다. 이때, scoville 벡터에 있는 값들이 모두 K 이상일 경우 조건을 충족하므로 0을 반환해줍니다. 2. 문제 조건에 따라 음식을 섞어주고 음식을 섞은 뒤 모든 음식이 K 이상인지 확..

[Programmers 코딩테스트 고득점 Kit] 도둑질

문제 링크입니다; https://programmers.co.kr/learn/courses/30/lessons/42897 코딩테스트 연습 - 도둑질 도둑이 어느 마을을 털 계획을 하고 있습니다. 이 마을의 모든 집들은 아래 그림과 같이 동그랗게 배치되어 있습니다. 각 집들은 서로 인접한 집들과 방범장치가 연결되어 있기 때문에 인접한 programmers.co.kr 전형적인 DP 문제였습니다. 알고리즘은 아래와 같습니다. 1. 인접한 집을 털 수 없으므로 점화식은 다음과 같습니다. max(i번째 집 + (i - 2) 번째 집, (i - 1) 번째 집) 2. 1번에서 구한 점화식을 첫 번째 집 혹은 두 번째 집부터 적용이 가능합니다. 2.1 따라서, 첫 번째 집부터 적용한 점화식과 두 번째 집부터 적용한 점화..

[Programmers 코딩테스트 고득점 Kit] 등굣길

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/42898 코딩테스트 연습 - 등굣길 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = programmers.co.kr 앞선 문제에 이어 전형적인 DP 문제였습니다. 알고리즘은 아래와 같습니다. 1. 웅덩이 좌표를 set에 저장해줍니다. 2. 오른쪽, 아래쪽으로만 움직일 수 있으므로 DP의 점화식을 [y, x]까지의 최단 경로 = [y - 1, x]까지의 최단 경로 + [y, x -1]까지의 최단 경로로 정의해줍니다. 3. 2번 식을 적용하여 이중 반..