본문 바로가기

전체 글61

탐욕법 - 구명보트 프로그래머스 (탐욕법) - 구명보트 해당 문제를 처음 풀때에 3가지 방법을 통해 풀어보려고 했습니다. 3가지 방법중 위에 2가지 방법은 효율성에서는 통과하지 못했고 마지막 방식만 통과하였습니다. 처음에는 정렬 없이 각 무게에 대해 다음 무게와의 합이 limit를 넘지않고 최대인 사람의 경우를 찾는 방식으로 진행했습니다. public int solution3(int[] people, int limit) { int answer = 0; int[] peopleWeights = Arrays.copyOf(people, people.length); for (int i = 0; i 0.. 2022. 3. 1.
탐욕법 - 큰 수 만들기 프로그래머스 (탐욕법) - 큰 수 만들기 해당 문제를 풀때에는 처음에는 문제를 제대로 이해 하지 못해 각 자릿수의 수를 구해 number 자리수 - k 자리수의 가장 큰수를 구했었습니다. 이후 문제를 이해해 보니 입력받은 문자의 순서는 유지한채로 k 만큼 수를 제거 했을 때 가장 큰수를 구하는 문제였습니다. 순서를 유지 해야 할 경우 가장 큰 수를 만들려면 앞자리가 가장 큰 것이 중요하기에 앞에서 k번째까지의 수중 가장 큰수가 있는 수까지 과감하게 제거 하는 방향으로 진행했습니다. base case는 제거해야하는 자릿수와 입력받은 숫자의 자릿수가 동일 할 때와 남은 제거해야 하는 수가 없을 경우 2가지로 정해 로직을 구현했습니다. public String solution(String number, int.. 2022. 2. 23.
완전탐색 - 카펫 프로그래머스 (완전탐색) - 카펫 해당 문제는 yellow로 만들 수 있는 사각형의 가로 세로 길이를 구하면 해당 사각형을 감싼 brown 사각형의 가로 세로 길이를 구할 수 있습니다(yellow 가로 + 2, yellow 세로 + 2). 이를 통해 해당 사각형을 감싼 brown의 갯수를 구할 수 있고, 입력받은 brown 갯수와의 비교를 통해 문제가 원하는 brown의 가로 세로 길이를 구할 수 있습니다. 문제에 가로의 길이가 세로의 길이보다 크거나 같다는 제약조건이 있어 시작 Width가 큰것부터 작은순으로 반복문이 돌도록 하였습니다. public int[] solution(int brown, int yellow) { int[] answer = {}; for (int yellowWidth = yell.. 2022. 2. 21.