ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • BOJ 1874 - 스택 수열
    코딩테스트 2023. 3. 19. 20:30

    https://www.acmicpc.net/problem/1874

    스택의 개념이 조금 들어간 재밌는 문제가 보여서 풀어봤습니다. 난이도는 실버3 이었던 것 같구요. 파이썬으로 간단하게 해결했습니다.

    파이썬이라 따로 STL로 스택 컨테이너를 만들 필요가 없더라구요.

    간단하게 입출력을 받고 스택 역할을 할 리스트와 결과를 담을 리스트를 초기화해주었습니다.

    처음에는 이 수열을 만들 수 있는지 없는지를 검사하는 함수를 먼저 짜려고 했다가, 그럴 필요 없이 그냥 반복문에서 스택의 마지막 원소와 만들고자 하는 수열을 계속 비교해주면 되겠더라구요.

    이 문제를 풀면서 확실하게 배운 점은 다음과 같습니다.

     

    1. 조건문을 작성할 때 조건들의 순서를 잘 고려해주기.

    처음 while문의 조건을 작성할 때,

    while stack[-1] == arr[0] and len(arr) > 0:

    과 같이 작성했는데, 이 때 and 의 앞부분에서 stack과 arr가 비어있는 경우에도 비교를 진행하기 때문에 잘못된 인덱스에 접근했다는 에러가 뜨게 됩니다. 이를 방지하기 위해

    while len(arr) > 0 and stack[-1] == arr[0]:

    이와 같이 array가 비어 있지 않음을 먼저 확인해야 합니다. and로 묶여 있다고 순서를 다 뭉뚱그리지 않기!!

     

    2. python에서의 removefront는 del과 pop으로 할 수 있다.

    리스트의 맨 첫 요소를 삭제하는 두 명령어의 차이가 궁금해서 chatgpt에게 물어보니까 다음과 같은 답변을 얻었습니다. 결론 : del 을 쓰자!! 삭제할 요소를 반환받을 필요가 있는 경우에만 pop을 쓰기!

    재밌는 문제였어요.

    '코딩테스트' 카테고리의 다른 글

    BOJ 1463 1로 만들기 python  (0) 2024.04.15
    BOJ 1064 - 평행사변형  (0) 2023.03.19
    숫자 문자열과 영단어  (0) 2023.03.11
    옹알이(1)  (0) 2023.03.11
    코딩테스트 공부 시작!  (0) 2023.03.08
Designed by Tistory.