코딩테스트[파이썬]/알고리즘 문제풀이 입문

[이진탐색- 역수열(그리디) *손도 못댐*

softmoca__ 2024. 2. 8. 09:30
목차

역수열(그리디)

 

 

 입력설명

첫 번째 줄에 자연수 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을 카운팅 하며 각자 자리에 넣는다.