프로그래머스
-
프로그래머스 땅따먹기 c++ 풀이 Level 2 연습문제 땅따먹기 문제 정리 땅따먹기의 땅은 총 N행 4열 모든 칸에는 점수가 있다. 1행부터 땅을 밟으며 한 행씩 내려오며, 각 행의 4칸 중 한 칸만 밟으면서 내려와야 한다. 단, 한 행씩 내려올 떄, 같은 열을 연속해서 밟을 수 없다. 마지막 행 까지 내려왔을 때, 얻을 수 있는 점수의 최대값으 구하여라. 문제 접근 DP??? 백준의 진우의 달 여행(Large) 문제와 비슷한 방식이라고 생각했습니다. 우선 dfs로 풀어보았습니다. 효율성 테스트도 있어서 시간초과 발생!!! 그래서 이번에는 풀이를 머릿속에 넣고 dp로 접근했습니다. 풀이가 잘 기억이 나지 않아 달 여행 문제 풀이를 보고 손으로 정리해보았습니다. 3차원 배열을 만들어서 [이전 col][현..
[DP] 프로그래머스 level2 땅따먹기 c++ 풀이프로그래머스 땅따먹기 c++ 풀이 Level 2 연습문제 땅따먹기 문제 정리 땅따먹기의 땅은 총 N행 4열 모든 칸에는 점수가 있다. 1행부터 땅을 밟으며 한 행씩 내려오며, 각 행의 4칸 중 한 칸만 밟으면서 내려와야 한다. 단, 한 행씩 내려올 떄, 같은 열을 연속해서 밟을 수 없다. 마지막 행 까지 내려왔을 때, 얻을 수 있는 점수의 최대값으 구하여라. 문제 접근 DP??? 백준의 진우의 달 여행(Large) 문제와 비슷한 방식이라고 생각했습니다. 우선 dfs로 풀어보았습니다. 효율성 테스트도 있어서 시간초과 발생!!! 그래서 이번에는 풀이를 머릿속에 넣고 dp로 접근했습니다. 풀이가 잘 기억이 나지 않아 달 여행 문제 풀이를 보고 손으로 정리해보았습니다. 3차원 배열을 만들어서 [이전 col][현..
2020.07.04 -
프로그래머스 다음 큰 숫자 c++ 풀이 Level 2 연습문제 다음 큰 숫자 문제 정리 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음고 같다. ``` n의 다음 큰 숫자는 n보다 큰 자연수 n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 개수가 같다. n의 다음 큰 숫자는 조건 1,2를 만족하는 수 중 가장 작은 수 n은 1,000,000 이하의 자연수이다. 문제 풀이 n보다 큰 숫자부터 2진수로 변환하여 1의 개수를 세본다. 개수를 세서 n의 1의 개수와 같다면 조건 1을 만족하고, 자동으로 조건 2도 만족하게 된다. 1의 개수는 이진수로 변환하는 로을 그대로 적용하면 된다. 2로 나눠서 2로 나눠 떨어지지 않는다면 1이 하나 있다는 뜻이다. 이를 n이 2나 1이 될때까지 반복한다. 마지막..
[2진수 변환] 프로그래머스 level2 다음 큰 숫자 c++ 풀이프로그래머스 다음 큰 숫자 c++ 풀이 Level 2 연습문제 다음 큰 숫자 문제 정리 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음고 같다. ``` n의 다음 큰 숫자는 n보다 큰 자연수 n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 개수가 같다. n의 다음 큰 숫자는 조건 1,2를 만족하는 수 중 가장 작은 수 n은 1,000,000 이하의 자연수이다. 문제 풀이 n보다 큰 숫자부터 2진수로 변환하여 1의 개수를 세본다. 개수를 세서 n의 1의 개수와 같다면 조건 1을 만족하고, 자동으로 조건 2도 만족하게 된다. 1의 개수는 이진수로 변환하는 로을 그대로 적용하면 된다. 2로 나눠서 2로 나눠 떨어지지 않는다면 1이 하나 있다는 뜻이다. 이를 n이 2나 1이 될때까지 반복한다. 마지막..
2020.07.03 -
프로그래머스 가장 큰 정사각형 찾기 자바(java) 풀이 Level 2 연습문제 가장 큰 정사각형 찾기 문제 정리 1과 0으로 채워진 표가 있다. 표 1칸은 1x1의 정사각형으로 이루어져 있다. 1로 이루어진 가장 큰 정사각형을 찾아 넓이를 return 하여라 naive한 문제 풀이 처음에는 정말 naive하게 5중 for문을 이용해서 풀어보았습니다. 정확성은 모두 맞추었지만 역시나 효율성 테스트는 통과하지 못했습니다. 최대 크기의 board에서 우측하단 하나만 0인 경우 이런 경우 터질 것 같습니다. naive한 코드는 아래와 같습니다. public static int solution(int [][]board) { int x_len = board.length; int y_len = board[0].le..
[DP] 프로그래머스 level2 가장 큰 정사각형 찾기 자바 풀이프로그래머스 가장 큰 정사각형 찾기 자바(java) 풀이 Level 2 연습문제 가장 큰 정사각형 찾기 문제 정리 1과 0으로 채워진 표가 있다. 표 1칸은 1x1의 정사각형으로 이루어져 있다. 1로 이루어진 가장 큰 정사각형을 찾아 넓이를 return 하여라 naive한 문제 풀이 처음에는 정말 naive하게 5중 for문을 이용해서 풀어보았습니다. 정확성은 모두 맞추었지만 역시나 효율성 테스트는 통과하지 못했습니다. 최대 크기의 board에서 우측하단 하나만 0인 경우 이런 경우 터질 것 같습니다. naive한 코드는 아래와 같습니다. public static int solution(int [][]board) { int x_len = board.length; int y_len = board[0].le..
2020.06.02 -
프로그래머스 이중우선순위 큐 자바 풀이 Level 3 해시(Hash) 이중우선순위큐 문제 정리 이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조 이다. 1.1 I 숫자 : 큐에 주어진 숫자를 삽입한다 1.2 D 1 : 큐에서 최댓값을 삭제한다. 1.3 D -1 : 큐에서 최솟값을 삭제한다. 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최대값, 최솟값]을 반환하여라. 최대/최소를 삭제하는 연산에서 최대/최소값이 둘 이상인 경우, 하나만 삭제한다. 빈 큐에 데이터를 삭제하라는 연산이 주어질 경우, 해당 연산은 무시합니다. 문제 접근 우선순위 큐는 deque 처럼 뒤에서 뺄 수 없습니다. 그래서 오름차순, 내림차순 우선순위 큐를 따로 두어 최대, 최소를 구해야겠다고 생각했습니다. 오..
[우선순위 큐] 프로그래머스 level3 이중우선순위큐 자바 풀이프로그래머스 이중우선순위 큐 자바 풀이 Level 3 해시(Hash) 이중우선순위큐 문제 정리 이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조 이다. 1.1 I 숫자 : 큐에 주어진 숫자를 삽입한다 1.2 D 1 : 큐에서 최댓값을 삭제한다. 1.3 D -1 : 큐에서 최솟값을 삭제한다. 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최대값, 최솟값]을 반환하여라. 최대/최소를 삭제하는 연산에서 최대/최소값이 둘 이상인 경우, 하나만 삭제한다. 빈 큐에 데이터를 삭제하라는 연산이 주어질 경우, 해당 연산은 무시합니다. 문제 접근 우선순위 큐는 deque 처럼 뒤에서 뺄 수 없습니다. 그래서 오름차순, 내림차순 우선순위 큐를 따로 두어 최대, 최소를 구해야겠다고 생각했습니다. 오..
2020.05.28 -
프로그래머스 라면 공장 자바(java) 풀이 Level 2 힙 라면 공장 문제 정리 공장에서 하루에 밀가루 1톤씩 사용한다. 앞으로 K일 후에야 밀가루를 공급 받을 수 있어서 해외 공장에서 밀가루를 수입해야 한다. 해외 공장에서는 밀가루를 공급할 수 있는 날짜와 수량을 알려주었다. 라면 공장에서는 운송비를 줄이기 위해 최소한의 횟수로 밀가루를 공급받으려고 한다. 밀가루가 떨어지지 않고 공장을 운영하기 위해서 최소한 몇 번 해외 공장으로부터 밀가루를 공급받아야 하는지 구해라 stock: 현재 남아있는 밀가루 양 dates[]: 밀가루 공급 일정 supplies[]: 해당 시점에 공급 가능한 수량 K: 원래 공장으로부터 공급받을 수 있는 시점 stock에 있는 밀가루는 오늘(0일)부터 사용된다. k일 째에는..
[우선순위 큐, comparable] 프로그래머스 level2 라면공장 자바 풀이프로그래머스 라면 공장 자바(java) 풀이 Level 2 힙 라면 공장 문제 정리 공장에서 하루에 밀가루 1톤씩 사용한다. 앞으로 K일 후에야 밀가루를 공급 받을 수 있어서 해외 공장에서 밀가루를 수입해야 한다. 해외 공장에서는 밀가루를 공급할 수 있는 날짜와 수량을 알려주었다. 라면 공장에서는 운송비를 줄이기 위해 최소한의 횟수로 밀가루를 공급받으려고 한다. 밀가루가 떨어지지 않고 공장을 운영하기 위해서 최소한 몇 번 해외 공장으로부터 밀가루를 공급받아야 하는지 구해라 stock: 현재 남아있는 밀가루 양 dates[]: 밀가루 공급 일정 supplies[]: 해당 시점에 공급 가능한 수량 K: 원래 공장으로부터 공급받을 수 있는 시점 stock에 있는 밀가루는 오늘(0일)부터 사용된다. k일 째에는..
2020.05.15 -
프로그래머스 더 맵게 자바(java) 풀이 Level 2 힙 H-Index 문제 정리 모든 음식의 스코빌 지수를 K 이상으로 만드려고 한다. 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만든다. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞는다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 구하여라. 모든 음식의 스코빌 지수를 K 이상으로 만들 수 없는 경우 -1을 return 하여라. 힙, 우선순위 큐 이는 힙(Heap)을 이용하여 풀 수 있습니다. 그 중에서도 힙을 이용해 구현된 우선수위 큐(..
[우선순위 큐] 프로그래머스 level2 더 맵게 자바 풀이프로그래머스 더 맵게 자바(java) 풀이 Level 2 힙 H-Index 문제 정리 모든 음식의 스코빌 지수를 K 이상으로 만드려고 한다. 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만든다. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞는다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 구하여라. 모든 음식의 스코빌 지수를 K 이상으로 만들 수 없는 경우 -1을 return 하여라. 힙, 우선순위 큐 이는 힙(Heap)을 이용하여 풀 수 있습니다. 그 중에서도 힙을 이용해 구현된 우선수위 큐(..
2020.05.12