본문 바로가기

Algorithm

(117)
[Programmers] 더 맵게 문제 설명 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2)Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다. Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하도록 solution 함수를 작성해주세요. 제한 사항 scovill..
[Programmers] 등굣길 문제 설명 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = 4, n = 3 인 경우입니다. 가장 왼쪽 위, 즉 집이 있는 곳의 좌표는 (1, 1)로 나타내고 가장 오른쪽 아래, 즉 학교가 있는 곳의 좌표는 (m, n)으로 나타냅니다. 격자의 크기 m, n과 물이 잠긴 지역의 좌표를 담은 2차원 배열 puddles이 매개변수로 주어집니다. 집에서 학교까지 갈 수 있는 최단경로의 개수를 1,000,000,007로 나눈 나머지를 return 하도록 solution 함수를 작성해주세요. 제한사항 격자의 크기 m, n은 1 이상 100 이하인 자연수입니다. m과 n..
[Programmers] FloodFill 문제 설명 n x m 크기 도화지에 그려진 그림의 색깔이 2차원 리스트로 주어집니다. 같은 색깔은 같은 숫자로 나타난다고 할 때, 그림에 있는 영역은 총 몇 개인지 알아내려 합니다. 영역이란 상하좌우로 연결된 같은 색상의 공간을 말합니다. 예를 들어, [[1,2,3], [3,2,1]] 같은 리스트는 다음과 같이 표현할 수 있습니다. 이때, 이 그림에는 총 5개 영역이 있습니다. 도화지의 크기 n과 m, 도화지에 칠한 색깔 image가 주어질 때, 그림에서 영역이 몇 개 있는지 리턴하는 solution 함수를 작성해주세요. 제한 사항 n과 m은 1 이상 250 이하인 정수입니다. 그림의 색깔은 1 이상 30000 미만인 정수로만 주어집니다. 생각 bfs로 풀수도 있지만 dfs 푸는것을 연습해보자 아래와 같..
[Programmers] 배상비용최소화 문제 설명 OO 조선소에서는 태풍으로 인한 작업지연으로 수주한 선박들을 기한 내에 완성하지 못할 것이 예상됩니다. 기한 내에 완성하지 못하면 손해 배상을 해야 하므로 남은 일의 작업량을 숫자로 매기고 배상비용을 최소화하는 방법을 찾으려고 합니다. 배상 비용은 각 선박의 완성까지 남은 일의 작업량을 제곱하여 모두 더한 값이 됩니다. 조선소에서는 1시간 동안 남은 일 중 하나를 골라 작업량 1만큼 처리할 수 있습니다. 조선소에서 작업할 수 있는 N 시간과 각 일에 대한 작업량이 담긴 배열(works)이 있을 때 배상 비용을 최소화한 결과를 반환하는 함수를 만들어 주세요. 예를 들어, N=4일 때, 선박별로 남은 일의 작업량이 works = [4, 3, 3]이라면 배상 비용을 최소화하기 위해 일을 한 결과는 ..
[Programmers] 후위표현 수식 생각 손으로 스택을 직접 그려보면서 중위표현식이 어떻게 후위표현식으로 바뀌는지 생각하면 된다. 닫는 괄호 연산자 마무리 작업(pop연산)을 잊지 말자 설계 알파벳이면 그냥 출력 '(' 이면 스택에 push ')' 이면 '('이 나올때까지 스택에서 pop 출력하고 pop한 원소를 결과값에 추가한다. 이 과정이 끝나고나서 한번 더 pop을 해줘야 ')'를 제거해주자 연산자가 나올때, 스택의 peek연산을 통해 연산자들끼리의 우선순위를 비교해준다. 그 다음 peek연산 결과값이 현재 연산자의 우선순위보다 크거나 같으면 스택에서 pop하고 결과값에 추가한다. (스택에 원소가 없거나 연산자 우선순위가 낮은것이 나올때까지 진행해야하는 조건을 통해 진행한다) 이 과정을 통해 연산자를 빼주고 반복문이 종료되면 현재 연..