목차
역수열(그리디)
▣ 입력설명
첫 번째 줄에 자연수 N(3<=N<100)이 주어지고, 두 번째 줄에는 역수열이 숫자 사이에 한
칸의 공백을 두고 주어진다.
▣ 출력설명
원래 수열을 출력합니다.
▣ 입력예제 1
8
5 3 4 0 2 1 1 0
▣ 출력예제 1
4 8 6 2 5 1 3 7
나의코드
n=int(input())
arr=list(map(int,input().split()))
res=[101]*n
res[arr[0]]=1
for i in range(n):
for j in range(arr[i],n):
이틀 간 이것 저것 적고 그려가며 시도해 보았지만 풀지 못했다...
정답 코드
import sys
sys.stdin=open("input.txt", "r")
n=int(input())
a=list(map(int, input().split()))
seq=[0]*n
for i in range(n):
for j in range(n):
if(a[i]==0 and seq[j]==0):
seq[j]=i+1
break
elif seq[j]==0:
a[i]-=1
for x in seq:
print(x, end=' ')
0은 빈자리를 나타낸다.
1부터 8까지 오름차순으로 진행할것이기 때문에 즉, 1,2,,,이후에 들어올 숫자들은 모두 해당 순서에서 탐색중인 숫자 보다 큰 숫자이기 때문에 0을 카운팅 하며 각자 자리에 넣는다.
'코딩테스트[파이썬] > 알고리즘 문제풀이 입문' 카테고리의 다른 글
[스택&큐] - 쇠막대기 (0) | 2024.02.08 |
---|---|
[스택&큐] - 가장큰수 (0) | 2024.02.08 |
[이진탐색]-증가수열만들기(그리디) (2) | 2024.02.07 |
[이진탐색] - 침몰하는 타이타닉(그리디) (2) | 2024.02.07 |
[이진탐색]- 창고정리 (2) | 2024.02.07 |