728x90

peek() 2

kotlin 프로그래머스 lv2 다리를 지나는 트럭

문제를보고 저번에 풀었던 "숫자 변환하기" 문제와 유사하여 queue를 이용해서 해결했다. 예시를 보면 트럭2대가 올라갈 수 있고 무게를 10kg까지 견디는 다리가 있다고 한다. 무게가 [7,4,5,6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 한다고 한다. 숫자 변환하기 그래서 나는 먼저 다리 위에 있는 트럭 배열을 LinkedList를 이용해서 onBridge변수를 초기화 했다. 그 후 다음으로 다리에 진입할 트럭의 인덱스 변수를 초기화했다. 마지막으로 모든 트럭이 다리를 건널 때까지 반복하는 작업을 했다. 여기서 while문의 조건은 onBridge 배열이 비어있지 않거나 다음 트럭의 인덱스가 주어직 매개변수 nextTruckIdx의 사이즈보다 작으면 answer을 ..

kotlin 프로그래머스 lv2 뒤에 있는 큰 수 찾기

해당문제를보고 for문에 담아서 현재i번째에있는 numbers의 요소와 i보다 큰 번째에있는 요소와 비교해서 현재요소가 작다면 큰요소를 현재위치에 삽입하고, 현재요소보다 큰요소가 없다면 -1을 대입하는 생각을 했다. 그래서 코드는 아래와 같이 바로 작성했다. 하지만 시간초과가 났고, for문때문에 시간이 오래걸린것이라 생각이 들었다. 다른 사람들의 풀이를 찾아보니 stack알고리즘을 이용하였다. 스택을 사용하는 이유를 찾아보았고, 다음과 같았다. 1.스택을 사용하여 이전에 처리한 요소들의 인덱스를 추적한다. 2. 주어진 배열을 왼쪽에서 오른쪽으로 반복하면서 각 요소에 대해 다음과 같이 수행한다. -스택이 비어있지 않고, 현재 요소보다 작은 요소들의 인덱스가 스택에 남아있다면, 해당 작은 요소들에 대한 결..

728x90