본문 바로가기

Algorithm

(3)
[2020 카카오 인턴십] 경주로 건설 문제 : https://programmers.co.kr/learn/courses/30/lessons/67259 더보기 문제 : 경주로를 건설하는데 필요한 최소 비용 직선으로 움직이는 경우 100원, 코너를 도는 경우 500원이 필요하다. 주어진 입력에서 0이면 갈 수 있고, 1이면 벽이 세워져 있어서 갈 수 없다. 입력 예시 : [[0,0,0],[0,0,0],[0,0,0]] 결과값 예시 : 900 [제한사항] board는 2차원 정사각 배열로 배열의 크기는 3 이상 25 이하입니다. board 배열의 각 원소의 값은 0 또는 1 입니다. board는 항상 출발점에서 도착점까지 경주로를 건설할 수 있는 형태로 주어집니다. 출발점과 도착점 칸의 원소의 값은 항상 0으로 주어집니다. 이 문제는 주어진 테스트 ..
[2020 카카오 인턴십] 보석 쇼핑 문제 : https://programmers.co.kr/learn/courses/30/lessons/67258 더보기 문제 : 진열된 모든 종류의 보석을 적어도 1개 이상 포함하는 가장 짧은 구간을 찾아서 구매 인덱스를 1부터 시작. 구간의 첫 인덱스와 끝 인덱스를 list로 저장해서 반환 입력 예시 : ["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] 예시 결과 값 : [3, 7] [제한 사항] gems 배열의 크기는 1 이상 100,000 이하입니다. gems 배열의 각 원소는 진열대에 나열된 보석을 나타냅니다. gems 배열에는 1번 진열대부터 진열대 번호 순서대로 보석이름이 차례대로 저장되어 있습니다. gems 배열의 각 원소..
[Python] 이진 탐색 (Binary Search) 반복문 사용 def solution(L, x): start = 0 end = len(L) - 1 while(start x : #{ end = mid - 1 #} else : #{ start = mid + 1 #} #} return -1 재귀문 사용 def solution(L, x, l, u): if l > u : return -1 mid = (l + u) // 2 if x == L[mid]: return mid elif x < L[mid]: return solution(L, x, l, mid-1) else: return solution(L, x, mid+1, u)