*문제 출처는 백준에 있습니다.
문제 제목: 한 줄로 서기 / 1138번 (실버 2단계)
문제 사이트: https://www.acmicpc.net/problem/1138
문제 설명
나의 풀이
N = int(input())
# 처음 아침에 줄 서는 사람들
people = list(map(int, input().split()))
# 결과 값
result = [0] * N
# 각 위치에 해당하는 인덱스 리스트를 만들어서
# 조건에 맞는 위치를 찾기 위해 사용할 수 있음
available_positions = list(range(N))
# 사람의 번호는 1부터 N까지
for number in range(1, N + 1):
p = people[number - 1]
result[available_positions[p]] = number
available_positions.pop(p)
# 결과 출력
print(" ".join(map(str, result)))
처음에 문제를 이해하는 과정에서 문제가 많았다.
people 배열에는 자기보다 큰 사람의 수 값을 가지고 있지만. 동시에 1 ~ N번까지의 번호를 가지고 시작한다.
그리고 0이 혼자라면 가장 왼쪽에 위치할 것이고, 0이 두 개 이상이라면 위치에 따라서 값이 달라진다.
※ 알아야 할 것
독해 능력
'코딩테스트(프로그래머스 & 백준) > 백준-Python' 카테고리의 다른 글
백준 / 평범한 배낭 / 12865번 / Python (0) | 2024.09.05 |
---|---|
백준 / 오큰수 / 17298번 / Python (0) | 2024.09.04 |
백준 / 연구소 / 14502번 / Python (0) | 2024.09.02 |
백준 / 좋다 / 1253번 / Python (1) | 2024.09.02 |
백준 / 가장 긴 증가하는 부분 수열 4 / 14002번 / Python (3) | 2024.08.28 |