https://www.acmicpc.net/problem/16496
16496번: 큰 수 만들기
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 리스트에 포함된 수가 주어진다. 수는 공백으로 구분되어져 있고, 1,000,000,000보다 작거나 같은 음이 아닌 정수 이다. 0을 제외한 나
www.acmicpc.net
n = int(input())
lst = input().split()
cnt = 0
for i in range(n-1, 0, -1): # 문자열로 붙여본다음 버블정렬 !
for j in range(i):
if int(lst[j] + lst[j+1]) > int(lst[j+1] + lst[j]):
pass
else:
lst[j], lst[j+1] = lst[j+1], lst[j]
for l in lst: # 다 0일 경우 0 하나만 출력
if l == "0":
cnt += 1
if cnt == n:
print(0)
else:
print(''.join(lst))
- 접근방식: 각 숫자들을 문자열로 받은 다음 첫 번째 원소에 두 번째 원소를 앞에 붙였을 경우, 뒤에 붙였을 경우 이 두 가지를 비교한 후 두 번째 원소를 앞에 붙이는게 더 큰 경우에는 두 개의 원소 자리 바꾸기. 만약 뒤에 붙였을 경우 더 크면 그대루 두기. 이런식으로 끝 원소까지 버블정렬 후 출력 !
- 느낀점: 문제 꼼꼼히 잘 읽기. 0이 여러 개면 0 하나만 출력 해야하는 것을 처음에 못봐서 한 번 틀렸다.. 또한 그리디 문제는 계속 발상전환 해보기, 버블정렬 까먹지 않기 !

'자료구조, 알고리즘 > 그리디' 카테고리의 다른 글
| [백준] 1422 숫자의 신(그리디) - Python (0) | 2023.04.12 |
|---|---|
| [백준] 13904 과제(그리디) - Python (0) | 2023.04.09 |
| [백준] 1931 회의실 배정(그리디) - Python (0) | 2023.04.07 |
| [백준] 2839 설탕 배달(그리디) - Python (0) | 2023.03.08 |