본문 바로가기
Algorithm/구현

[Python3] 1138번 한 줄로 서기

by HANNI하니 2023. 4. 9.

사용 언어 - Python3

문제 - 한 줄로 서기

 

1138번: 한 줄로 서기

첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다

www.acmicpc.net

 

정답

이중반복문 구현 (정답 맞춘 여부 X)

각 자리마다 왼쪽에 있는 키 큰 사람수(cnt)총 4자리일때 0 1 2 3 이다.

왼쪽에 있는 키 큰 사람수 arr[i]가 cnt와 동일하고, 해당 자리가 비어있다면,

answer[j] 그 자리에 i+1(자릿수가 1부터 시작하므로, 인덱스+1)을 앉힌다.

왼쪽에 있는 키 큰 사람수 arr[i]와 cnt가 동일하지 않고, 해당 자리가 비어있다면,

cnt += 1 한 자리 오른쪽으로 간다.

j 값을 한개씩 증가하면서 자리를 찾아준다.

n = int(input()) #사람수
arr = list(map(int,input().split())) #왼쪽에 있는 자기보다 큰 사람수
answer = [0]*n #모두 비어있는 자리

for i in range(n):
    cnt = 0 #왼쪽에 있는 키 큰 사람 수
    for j in range(n):
        # 왼쪽에 있는 키 큰 사람수가 arr[i]와 같고, 현재 자리에 아무도 없다면
        if cnt == arr[i] and answer[j] == 0:
            answer[j] = i+1
            break
        elif answer[j] == 0:
            cnt += 1
            
print(" ".join(map(str,answer)))

 

 

 


레퍼런스

  • 정답 참고
 

[baekjoon] 백준 1138번(파이썬): 한 줄로 서기

문제 1138번: 한 줄로 서기 첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주

fre2-dom.tistory.com

  • 정답 깃허브
 

GitHub - yyeongeun/codingtest: 코딩테스트 공부

코딩테스트 공부. Contribute to yyeongeun/codingtest development by creating an account on GitHub.

github.com

 

댓글