-
[TIL] Python 쉬운 알고리즘 문제 풀기 + 정리언어, 프레임워크/Python 2020. 8. 20. 22:14
별건 없지만 일단 기록! 알고리즘 풀고 알게된 내용 정리 🐌
프로그래머스 Level 1
문제: https://programmers.co.kr/learn/courses/30/lessons/64061?language=python3
def solution(board, moves): answer = 0 stack = [] while len(moves) > 0: # 파이썬은 pop()안에 인덱스를 넣어 해당 인덱스 요소를 뺄 수 있다 i = moves.pop(0) for arr in board: if(arr[i - 1] != 0): stack.append(arr[i - 1]) arr[i - 1] = 0 break if len(stack) >= 2: # 끝 요소와 끝에서 두번째 요소가 동일하면 if stack[-1] == stack[-2]: # 뒤에서 2개를 제거 stack = stack[:-2] answer += 2 return answer
del은 삭제한 값을 반환하지 않기 때문에, 삭제한 값을 사용해야 되는 이러한 문제에선 pop()으로 제거를 한 뒤 해당 값을 변수에 할당해서 사용하는 게 좋을 것 같다.(remove는 삭제할 값을 지정해줘야 하기 때문에 아예 이런 상황에선 패스!)
왜 리스트에서 값을 빼는 건 pop이고 추가하는 건 append일까 궁금해서 찾아봤는데 큰 이유는 없었다. append는 파이썬 초기(1991)에 만들어졌고 pop은 이보다 나중에 만들어졌는데, pop과 의미를 맞추자고 push를 만들기에는 이미 append가 같은 기능을 하여 append가 살아남았다고 한다.
'언어, 프레임워크 > Python' 카테고리의 다른 글
[Python] 어느 날 친구가 악성 프로그램을 만들어줄 수 있겠냐고 물어봤다. (0) 2023.07.23 [TIL] Python 쉬운 알고리즘 문제 풀기 + 정리 (0) 2020.08.21 [TIL] Python 쉬운 알고리즘 풀기 + 정리 (0) 2020.08.17 [TIL] Python 쉬운 알고리즘 문제 풀기 + 정리 (1) 2020.08.16 [TIL] Python 쉬운 알고리즘 풀기 + 메소드 정리 (0) 2020.08.15