| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
- 다이나믹 프로그래밍
- kotlin
- 통신 인터페이스
- 동적계획법
- dfs
- 컴퓨터비전
- BFS
- 누적합
- 컴퓨터 비전
- 백준
- level2
- 구현
- 다이나믹프로그래밍
- JavaScript
- C
- lv2
- 이분탐색
- level3
- Stack
- 프로그래머스
- 2018 KAKAO BLIND RECRUITMENT
- cpp
- dp
- c++
- 그리디
- 임베디드
- 우선순위큐
- 코틀린
- java
- 자바
- Today
- Total
목록Stack (3)
코드를 느껴바라
문제링크성공 여부(걸린 시간): 성공(43분)아이디어이 문제는 길이가 N인 수에서 K개의 숫자를 제거해 가장 큰 수를 만드는 문제이다. 핵심은 앞에서부터 가능한 한 큰 숫자를 남기기 위해 작은 숫자를 우선적으로 제거하는 것이다.먼저 입력받은 숫자를 큐에 차례대로 저장한다. 결과를 담을 자료구조로는 스택처럼 동작할 수 있는 Deque를 사용한다.숫자를 앞에서부터 하나씩 확인하면서, 현재 숫자가 다음 숫자보다 크거나 같다면 결과에 넣는다. 하지만 현재 숫자가 다음 숫자보다 작다면 뒤에 더 큰 숫자가 있다는 의미이므로 현재 숫자를 제거하고 K를 하나 줄인다. 이 과정을 K가 0이 되거나 큐가 빌 때까지 반복한다.그 후 큐에 남은 숫자들을 결과에 넣어주고, 만약 아직 K를 다 쓰지 못했다면 이는 이미 앞부분이 ..
문제 링크=성공 여부(걸린 시간): 성공(42분 16초)아이디어이 문제는 양쪽에서 자신보다 더 큰 건물이 어디에 있는지를 찾아야 하고,그 건물이 자기 기준으로 얼마나 가까운지, 그리고 그동안 자신이 볼 수 있었던 건물 수는 몇 개인지를 출력해야 하는 문제다.핵심 아이디어스택을 이용해 좌측/우측에서 자신보다 큰 건물을 찾는다.arr[i]보다 큰 건물이 스택의 top에 있을 경우, 해당 건물이 자신이 처음 만나는 큰 건물이 된다.그때 스택에 쌓여 있던 건물 수 = 자신이 볼 수 있는 건물 수이므로 cnt[i]에 더해준다.좌측에서 큰 건물을 찾을 땐 왼쪽부터 오른쪽으로 순회하고, 우측은 오른쪽부터 왼쪽으로 순회한다.최종 출력 시 조건 분기좌우 모두 큰 건물이 없으면 0 출력한쪽에만 큰 건물이 있으면 그쪽 건물..
문제 링크성공 여부(걸린 시간): 성공(17분 38초)아이디어이 문제는 백준에 있는 오큰수와 동일한 문제이다. 푼지 3년이 넘었기에 기억이 안나서 처음에 생각만 10분정도 했다.떠오른 아이디어는 어차피 현재 위치의 수가 오른쪽에 존재하는 수보다 클 때 그 수가 현재 위치의 수의 왼쪽 수보다 커서 적힐 정답 배열에 적힐 일은 없다. 말이 좀 어려운데 동작으로 설명하면 뒤에서부터 지나오면서 스택에다 넣어주는데그렇게 하다가 자기보다 큰 수를 찾을때까지 stack을 pop시킬 때 pop당한 수들은 어차피 현재 비교 기준인 수보다 작은 수들이기에고려할 필요가 없다는 말이다.numbers result[2, 3, 3, 5] [3, 5, 5, -1]예제 1번으로 설명하면만약 5라면 스택이 비어있기에 -1을 배열에 넣고..
