Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- kotlin listview
- 객체의 동일성
- isNullOrBlank
- 해시
- 카카오 순위검색
- 컬렉션함수
- kakao blind
- Kotlin
- 프로그래머스 #탐욕법 #큰수만들기 #join #python
- lateinit
- add view
- 코틀린 data class
- kotlin recyclerview
- 코틀린 문자열
- class
- 코틀린 중첩클래스
- 프로그래머스
- 코틀린 람다함수
- 코틀린 lateinit
- collection function
- 코틀린 내부 클래스
- kotlin addview
- 코틀린
- programmers # 프로그래머스 #큰수비교 #cmp_to_key()
- kotlin collection
- 코틀린 제너릭
- 내용의동일성
- Kotlin Generic
- 코틀린 컬렉션함수
- 컬렉션 함수
Archives
- Today
- Total
엔지니어 규의 IT 프로그래밍 다이어리
프로그래머스 : 탐욕법(Greedy) - 큰수만들기 본문
728x90
문제 설명
어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다.
예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다.
문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요.
제한 조건- number는 2자리 이상, 1,000,000자리 이하인 숫자입니다.
- k는 1 이상 number의 자릿수 미만인 자연수입니다.

나의풀이
from itertools import combinations
def solution(number, k):
index_l = list(map(int, range(len(number))))
num_l = list(number)
perm_l = list(combinations(index_l,len(index_l)-k))
answer = []
for i in perm_l:
transfer =''
for j in i:
transfer += num_l[j]
answer.append(int(transfer))
answer = str(max(answer))
return answer
|
cs |
코드를 설명하자면,
1. index 값에 대한 모든 combination 값을 구하고,(perm_l)
2. answer 에 k만큼 빠졌을때 생성될수 있는 모든 경우의수를 다 집어넣고,
3. 그중 최대값을 str 로 바꿔서 반환한다.
이렇게 풀어보았을때, 시간초과가 난다.
풀면서도 당연히 시간초과가 날것이라고 생각하였고, 역시나였다.
아마 2중 for문, combination 을통해 모든 경우를 구해서 이런 결과가 나왔을거라고 생각된다.
다른 사람 풀이를 살펴보자.
다른풀이
def solution(number, k):
answer = [] # Stack
for num in number:
while k > 0 and answer and answer[-1] < num:
answer.pop()
k -= 1
answer.append(num)
return ''.join(answer[:len(answer) - k])
|
cs |
주요 Skill
1. append, pop
2. join
3. while k >0 and answer and answer[-1] < num:
answer = [] 일때,
while 문 자체를 돌리지 않기 위한 skill 로서 while answer 이라는 구문을 사용하였다.
728x90
'코딩테스트 > python' 카테고리의 다른 글
프로그래머스 : 스택/큐 - 올바른 괄호 (0) | 2023.01.20 |
---|---|
프로그래머스 : 해시 - 전화번호 목록 (0) | 2023.01.19 |
프로그래머스 : 완전탐색 - 소수찾기 (0) | 2023.01.19 |
프로그래머스 : 해시 - 완주하지 못한 선수 (0) | 2023.01.16 |
프로그래머스 : 정렬 - 가장큰수 (0) | 2023.01.15 |
Comments