일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- que
- skip-gram
- Sigmoid
- 딥러닝
- SQL
- 파이썬
- 자연어처리
- Programmers
- MySQL
- 신경망
- Python
- dl
- hash
- Heap
- CBOW
- PPMI
- affine
- FullyConnectedLayer
- kakao
- stak
- 프로그래머스
- DeepLearning
- boj
- backward
- select
- Word2vec
- sort
- Stack
- algorithm
- Numpy
- Today
- Total
목록Algorithm (23)
혜온의 이것저것
[문제 이해 및 풀이] [3,30,34,5,9]로 문제의 흐름을 파악했다. 먼저 앞의 수가 큰 수가 와야 하기 때문에 숫자를 문자로 변경해준 뒤 sort(key=lambda:x[0],reverse=True)를 사용해서 정렬을 해주었다. 그 결과 ['9', '5', '3', '30', '34']의 값을 얻을 수 있었다. 이렇게 풀면 3, 30, 34부분에서 문제에서 원하는 정렬이 일어나지 않는다. 한참을 고민하다가 다른 사람들의 풀이를 참고해서 풀었다. 숫자가 모두 1000이하의 수 이기 때문에 문자로 된 값에 *3을 해줘서 비교를 진행했다. 3->333 / 30->303030 / 34->343434 로 변한 세 수를 비교해보면 아스키코드의 경우 앞에서부터 비교가 진행되기 때문에 343434 가 가장 큰 ..
[문제 이해 및 풀이] commands 안에 있는 리스트에서 첫번째 값은 시작하는 순서값, 두번째 값은 끝나는 순서값, 세번째 값은 정렬 후 위치한 숫자의 순서값이다. 여기서 주의할 점은 commands에서 말하고 있는 순서값은 인덱스 값이 아니기 때문에 1부터 시작한다는 점이다. 따라서 array에서 뽑아올 때 -1을 해주었다. [나의 코드] def solution(array,commands): answer=[] for lst in commands: arr=array[lst[0]-1:lst[1]] answer.append(sorted(arr)[lst[2]-1]) return answer 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/42748 ..
[문제 이해 및 풀이] 맨 처음에는 heapq를 사용해서 문제를 해결해야겠다고 생각했다. 우선 operations을 돌면서 하나씩 입력받으며 I이면 heap에 push해주고 숫자가 1이면 초대값을, -1이면 최소값을 출력해주는 코드를 짜려고 했다. heap은 push해주는 과정에서 최소힙 혹은 최대힙으로 바로 정렬이 가능하기 때문에 그 방법을 했지만 최소힙으로 넣은 경우에는 최대값을 출력하는 과정에서, 최대힙으로 넣은 경우에는 최소값을 출력하는 과정에서 어려움을 겪었다. 그래서 우선 stack/que를 사용해보기로 하였다. delete명령을 받으면 list정렬을 해준 뒤 맨 처음 값 혹은 맨 마지막 값을 출력해주는 코드를 짰다. 제출을 한 뒤, heapq를 이용한 방법을 찾아보다가 remove를 활용하면..
[문제 이해 및 풀이] heap을 사용하는 문제여서 heapq를 사용해야겠다고 생각했다. heapq.heappop()을 사용해서 최소값과 두번째로 작은 값을 변수에 저장을 한 뒤, heapq.heappush()를 사용해서 새로운 스코빌지수를 heap에 넣어주었다. 종료 조건인 모두 K를 넘을 경우에를 계산해주기 위해 heap의 성질을 생각하여 heap[0]가 K이상일 경우에 종료시켜주었다. 또 하나의 종료조건은 모든 음식의 스코빌 지수를 K이상으로 만들 수 없는 경우이다. 이 경우는 더 이상 섞을 음식이 없을 경우 즉, heap에 하나의 지수만 남아있는 경우에 해당된다. 따라서 이에 해당하는 if-break문을 만들어 넣어주었다. [나의 코드] import heapq def solution(scovile..
[문제 이해 및 풀이] 최대값이 맨 앞에 있을 때에만 출력이 발생하고 최대값이 아닌 경우에는 순서가 올 때까지 리스트의 뒤로 들어가면서 인덱스가 계속 변하게 된다. 맨 처음에는 앞에 있는 값이 뒤로 간다는 것 때문에 deque의 rotate를 사용해야 하나 싶어 구현해 보려고 했지만 실패했다. 같은 숫자가 있는 두번째 예시와 같은 경우에는 숫자를 찾아도 그게 내가 원하는 값인지 아닌지 구별이 꼭 필요하다. 그래서 target을 명시해 주는 target 리스트를 새로 만들어 주었다. priorities.pop(0) 값을 num에 저장해둔뒤 비교를 진행하였다. 최대값이 아니라면 최대값이 나올 때 까지 다시 리스트의 맨 뒤에 append 시켜줬다. 이때 target에서도 똑같이 움직였다. 최대값일때에는 내가 ..