본문 바로가기

Algorithm/Problem_프로그래머스55

프로그래머스(외벽 점검) - Java [외벽 점검] https://programmers.co.kr/learn/courses/30/lessons/60062 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr * 조건 외벽의 길이(n)이 주어진다 취약점의 위치(weak[])가 주어진다 점검이 가능한 각각 친구들의 시간(dist[])이 주어진다 친구들을 모두 투입해도 모두 점검이 불가능하다면 -1을 리턴한다 * 알고리즘 브루트 포스 * 로직 점검이 가능한 친구들의 시간을 순열을 활용해 경우의 수를 고려한다 각 경우의 수가 존재할 때 점검이 가능한지 판단한다 취약점의 첫 번째 인덱스부터 출발점이라고 생각.. 2019. 12. 9.
알고리즘(도둑질) * 조건 각각의 집들과 집에 존재하는 돈이 주어진다(money[]) 도둑은 인접한 집들은 털수 없다 훔칠 수 있는 돈의 최댓값을 구한다 * 알고리즘 DP * 로직 첫 번째 집부터 털이를 시작하는 경우 -> 마지막 집은 털 수 없음(인접) dp_first[0] = money[0], dp_first[1] = money[0] -> 인접하기 때문에 첫 번째 집을 털은 경우가 더 큼 dp_first[i] : i번째 집까지 훔칠 수 있는 돈의 최댓값을 갱신한다 현재 집(i)을 털게 된다면 -> 이전에 인접하지 않은 집까지의 최댓값 + 현재 집의 돈 털지 않는다면 -> 이전에 인접한 집까지의 최댓값 위 두가지 중 큰 값을 넣어준다 첫 번째 집부터 털이를 시작하지 않는 경우 -> 마지막 집을 털 수 있음 dp_seco.. 2019. 12. 2.
알고리즘(징검 다리, 카드 게임) [징검 다리] * 조건 출발지점(0)부터 도착지(distance)가 존재한다 그 사이에는 바위들의 위치(rocks[])가 주어진다 제거할 수 있는 바위의 수(n)이 주어진다 주어진 바위들 중 n개만큼 제거했을 때 나올 수 있는 거리의 최솟값 중에서 가장 큰 값을 출력한다 * 알고리즘 이분 탐색 * 로직 주어진 바위들을 오름차순 정렬을 한다 이분 탐색을 사용할 때, mid 값을 거리의 최솟값으로 생각한다 처음엔 현재 돌의 위치 - 출발 위치(base = 0)가 mid보다 작은지를 판별한다 만약 mid 보다 작다면 -> 현재 mid보다 더 낮은 거리가 존재하기 때문에 돌을 제거한다(cnt++) 만약 mid 이상이면 -> base를 현재 돌의 위치로 갱신한다 돌을 제거한 개수가 n보다 크다면 => rear =.. 2019. 11. 27.