일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 내휴학생활중의아주큰일
- Github
- level4
- SWEA
- 다시풀기
- 어렵다
- level1
- 대학원
- Python
- 휴학
- androidstudio
- LEVEL2
- BFS
- git
- Matrix Factorization
- MSBuild
- py
- level3
- 프로그래머스
- java
- 자바
- 대학원일기
- 파이썬
- build
- 컨트리뷰톤
- SQL
- WebOS
- 안드로이드스튜디오
- 컴퓨터비전
- D3
Archives
- Today
- Total
bit가 눈 앞에서 왔다갔다
Py) 프로그래머스 42883 본문
https://programmers.co.kr/learn/courses/30/lessons/42883
코드 보러 다니면서 알고리즘 공부 방식을 좀 바꾸기로 했다.
1. 코드 보고 그대로 외워서 풀지 말 것
2. 응용해서 내 코드로 소화시켜서 풀 것
나는 사고력이 약해서 이렇게 해야할 것 같다.
어차피 시간 오래 걸리는거 조금 더 힘들게 해서 오래 걸리자.
내가 푼 코드
def calc(cnum, k, i):
global store
if k == 0:
if store < int(str(cnum)):
store = int(str(cnum))
return
k-=1
del cnum[i]
for j in range(0,len(cnum)):
calc(cnum, k, j)
# 리스트의 인덱스를 하나씩 움직이며 값을 지워나감
def solution(number, k):
answer = ''
global store
store = -1
lnum = list(number)
i=0
calc(lnum, k, i)
answer = store
return str(answer)
print(solution(number="1924", k=2))
del cnum[i]
에서 인덱스 범위를 벗어난다는 에러 발생
그거 말고 틀린 것도 많을 것 같지만, 내일 9시 출근 아니었으면 진짜 저거 손으로 다 써서라도 알아냈다ㅠ 진짜ㅠㅠ7시에 일어나야되니까 참는다ㅠ
def solution(number, k):
answer = ''
# 아이디어 - stack에 넣어주고, stack에 들어있는 수가 작으면 빼버린다
stack = [number[0]]
for i in number[1:]:
while stack and k>0 and stack[-1]<i:
stack.pop() # 빼버림
k -= 1
stack.append(i)
answer = ''.join(stack)
return answer
쭉 통과 뜨다가 마지막 하나 실패 뜨는거 보고 신나다가 철렁함
def solution(number, k):
answer = ''
# 아이디어 - stack에 넣어주고, stack에 들어있는 수가 작으면 빼버린다
stack = [number[0]]
for i in number[1:]:
while stack and k>0 and stack[-1]<i:
stack.pop() # 빼버림
k -= 1
stack.append(i)
if k>0:
stack = stack[:-k]
answer = ''.join(stack)
return answer
k>0인 경우가 뭐가 있을까..
4321같이 stack의 top이 number의 그 다음 수보다 계속 커버리면 k가 줄어들수가 없었다..
*
itertools.combination
+ itertools.. 대박이다 진짜.. (이 문제는 itertools 쓰면 런타임 걸린다고)
https://docs.python.org/ko/3/library/itertools.html
반응형
Comments