파이썬 백준 2605번
브론즈 2
https://www.acmicpc.net/problem/2605
문제 보기
분류: 구현, 자료 구조
문제 풀기
학생 번호와 뽑은 번호표와의 관계를 통해 줄 선 순서를 확인해 보면, (학생 번호 - 번호표) 가 그 순서 위치임을 알 수 있다.
이 관계를 통해 해당 위치에 학생을 중간에 넣기 위해서 list, insert() 를 사용한다.
index 를 학생의 번호와 맞추기 위해 index 0 에 0 을 초기화하여 리스트 student_ls 를 사용하였다.
student_ls.insert(studentNum - t, studentNum) 로 학생의 줄 순서를 저장하고 초기 입력된 index 0 을 제거하고 출력한다.
코드 보기
import sys
inputdata = sys.stdin.readline
def fnGetInLine():
studentNum = 1 # 첫 번째 (1 번) 학생.
for t in ticket_ls: # 번호표 리스트에서 학생 순서에 맞게 하나씩 그 번호를 빼냄.
student_ls.insert(studentNum - t, studentNum) # (번호표 - 학생순서) index 위치에 학생 번호를 삽입.
studentNum += 1 # 학생 번호를 하나씩 늘려가며 반복.
student_ls.pop(0) # index 를 맞추기 위해 초기값으로 넣은 index 0 값 제거.
print(*student_ls) # 출력 요건에 맞게 print.
if __name__ == "__main__":
n = int(inputdata().strip())
student_ls = [0] # 학생의 번호를 저장할 리스트. index 를 맞추기 위해 0 으로 시작.
ticket_ls = list(map(int, inputdata().split()))
fnGetInLine()
'공부하기 > 백준' 카테고리의 다른 글
[Java] 백준 풀기 10757 - 큰 수 A+B (0) | 2023.01.31 |
---|---|
[Python] 백준 풀기 11718 - 그대로 출력하기 (0) | 2023.01.30 |
[Java] 백준 풀기 2475 - 검증수 (0) | 2023.01.28 |
[Python] 백준 풀기 11723 - 집합 (0) | 2023.01.27 |
[Java] 백준 풀기 2441 - 별 찍기 4 (0) | 2023.01.26 |