일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- kakao
- Numpy
- affine
- dl
- FullyConnectedLayer
- 프로그래머스
- Python
- MySQL
- algorithm
- Programmers
- Heap
- SQL
- Sigmoid
- backward
- que
- skip-gram
- 신경망
- Stack
- hash
- boj
- 파이썬
- select
- 딥러닝
- Word2vec
- DeepLearning
- 자연어처리
- sort
- stak
- CBOW
- PPMI
- Today
- Total
혜온의 이것저것
[코딩테스트 고득점 KIT] 정렬 가장 큰 수 - Python 본문
[문제 이해 및 풀이]
[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 가 가장 큰 수가 되고 그 다음으로는 333, 303030 순이다.
이렇게만 해서 결과값을 출력하면 테스트11에서 실패하게 된다.
그 이유는 numbers가 [0,0,0,0]인 경우 "0"을 출력해야하는데 "0000"를 출력하기 때문이다. 이를 위해서 answer를 int로 변경해준 뒤 다시 str로 변경해서 return 해주면 문제가 해결된다.
[최종 코드]
def solution(numbers):
numbers=list(map(str,numbers))
numbers.sort(key=lambda x: x*3,reverse=True)
return str(int(''.join(numbers)))
[다음 번에 사용해 볼 것]
for문을 사용하는 대신 map과 join을 사용하는 것에 익숙해지자!
for i in range(len(numbers)):
numbers[i]=str(numbers[i])
#-------------------------------
numbers=list(map(str,numbers)
if numbers[0]=='0':
return '0'
else:
for num in numbers:
answer+=num
return answer
#-------------------------------
answer=str(int(''.join(numbers))
문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/42746
코딩테스트 연습 - 가장 큰 수
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰
programmers.co.kr
'Algorithm > Programmers' 카테고리의 다른 글
[코딩테스트 고득점 Kit ] 완전탐색 모의고사 - Python (0) | 2021.10.04 |
---|---|
[코딩테스트 고득점 KIT] 정렬 H-index - Python (0) | 2021.09.29 |
[코딩테스트 고득점 Kit] 정렬 K번째 수 - Python (0) | 2021.09.27 |
[코딩테스트 고득점 Kit] 힙(Heap) 이중우선순위큐 (0) | 2021.09.24 |
[코딩테스트 고득점 Kit] 힙(Heap) 더 맵게 - Python (0) | 2021.09.22 |