소스 코드
import sys
input = sys.stdin.readline
n = int(input())
board = list(map(int,input().split()))
# 대기열
side = []
# 현재 순번
num = 1
while num <= n:
# 줄선 공간에 학생이 존재하고
# 현재 간식을 받을 순번과 학생의 순번이 일치하는 경우
if len(board) > 0 and board[0] == num:
num += 1
board.pop(0)
else:
# 대기열에 학생이 존재하고
# 현재 간식을 받을 순번과 대기열에 가장 마지막에 들어간 학생의 순번이 일치하는 경우
if len(side) > 0 and side[-1] == num:
num += 1
side.pop(-1)
else:
# 줄선 공간에 학생이 존재하는 경우
if len(board) > 0:
side.append(board.pop(0))
else:
break
if len(board) == 0 and len(side) == 0:
print('Nice')
else:
print('Sad')
해결 방법
1. 줄선 공간의 가장 앞쪽에 있는 학생과 대기 공간의 가장 마지막 쪽에 있는 학생을 현재 간식을 받을 순번과 비교
2. 비교 후 존재하면 해당 학생을 해당 공간에서 제거하고
3. 존재하지 않으면 대기열에 추가
4. 대기 공간에 학생을 추가할 때, 줄선 공간에 학생이 존재하는지 확인 반드시 필요
5. 확인하지 않는 경우 인덱스 에러 발생
느낀 점
ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.
오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.
혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.
'코딩 문제해결 > 문제 풀이.백준' 카테고리의 다른 글
[BOJ/백준 코딩] 과제는 끝나지 않아! - PYTHON #17952 (0) | 2023.06.03 |
---|---|
[BOJ/백준 코딩] 크로아티아 알파벳 - PYTHON #2941 (0) | 2023.06.02 |
[BOJ/백준 코딩] 그룹 단어 체커 - PYTHON #1316 (0) | 2023.05.27 |
[BOJ/백준 코딩] 점프 - PYTHON #1890 (0) | 2023.05.21 |
[BOJ/백준 코딩] 단어 나누기 - PYTHON #1251 (0) | 2023.05.20 |