programmers 285

[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번 식을 적용하여 이중 반..

[Programmers 코딩테스트 고득점 Kit] 정수 삼각형

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/43105 코딩테스트 연습 - 정수 삼각형 [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30 programmers.co.kr 기존에 풀어봤던 유형인 DP 문제였습니다. 알고리즘은 아래와 같습니다. 1. 삼각형을 좌표로 표현하면 1층은 [0, 0], 2층은 [1, 0], [1, 1], ..., N층은 [N-1, 0], [N-1, 1], ... [N-1, N-1]로 표현할 수 있습니다. 2. 따라서, [0, 0]부터 시작해서 재귀함수로 왼쪽, 오른쪽 중 결과물이 더 큰 쪽으로 움직이도록 코드를 작성해줍니다. 2.1 이 때, 밑으로 내려갈수록 같은..

[Programmers 코딩테스트 고득점 Kit] N으로 표현

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/42895 코딩테스트 연습 - N으로 표현 programmers.co.kr set을 이용해서 푸는 재밌는 문제였습니다. set을 이용한 이유는 숫자 중복을 방지하기 위해서입니다. 알고리즘은 아래와 같습니다. 1. vector를 정의해주는데 벡터 내 인덱스의 뜻은 N을 사용한 횟수입니다. ex) [1] -> N 1번 사용, [5] -> N 5번 사용 2. 1 ~ 8까지 반복문을 돌리며 1번에서 정의한 벡터의 인덱스에 N으로 i번 이어진 숫자를 넣어줍니다. 2.1 N을 j번 쓴 숫자와 N을 (i - j)번 쓴 숫자에 대해 사칙연산을 진행하면 N을 i번 쓴 숫자를 구할 수 있으므로 해당 조합을 모두 벡..

[Programmers 코딩테스트 고득점 Kit] H-Index

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/42747 코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr 논문의 수가 최대 1,000편이고 논문별 인용 횟수가 최대 10,000회이므로 O(N * M)으로 풀 수 있는 간단한 정렬 문제였습니다. 개발환경:Visual Studio 2017 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

[Programmers 코딩테스트 고득점 Kit] 가장 큰 수

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/42746# 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 정렬 기준을 잘 작성해야 하는 문제였습니다. 알고리즘은 아래와 같습니다. 1. numbers 벡터를 모두 string으로 변환한 string 벡터를 생성합니다. 2. 정렬을 하는데 정렬 기준은 두 문자열을 합쳤을 때 사전 순서 역순으로 정렬을 진행해줍니다. 3. 2번에서 정렬한 ..