일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- PYTHON
- 알고리즘 문제풀이
- 백준
- 카카오 코딩테스트
- DTFT
- dft
- 코딩테스트
- Trie
- leetcode
- 코테
- 파이썬
- 알고리즘
- 전자공학
- 릿코드
- 프로그래머스
- 이산신호처리
- 신호처리
- leet code
- 트라이
- backjoon
- SWIFTUI
- 스위프트
- DSP
- 컨볼루션
- Leet Coding Challenge
- 독서노트
- 알고리즘문제풀이
- 코테준비
- SWIFT
- IOS
Archives
- Today
- Total
매일 매일 성장하는 섭섭군
[Seop's의 코드풀이] 백준 5397 키로커 - Python 본문
반응형
백준 5397 키로커
이번에 풀어볼 문제는 백준 5397번 키로커 라는 문제이다.
스택 알고리즘에 분류되어있고 solved.ac 랭크 실버3 정도의 문제이다.
문제는 다음과 같다.링크
내가 본 문제에서 중점적으로 본 것은 커서의 위치를 어떻게 컨트롤 하는지에 관련된 것이다.
커서의 위치를 기억하고 해당하는 위치에 비밀번호를 입력하고 삭제하게 된다면
굉장히 많은 시간을 낭비하게 될것이다.
Python list에서 insert와 특정위치의 pop의 시간복잡도는 O(N)이다.
문제 해결 아이디어
- 하나가 아닌 두개의 스택을 사용한다.(stack1, stack2)
- 알파벳이 나왔을 경우 stack1에 쌓는다.
- "-"가 나올경우 stack1에서 pop을 진행한다.
- "<" 가 나올경우 stack1에서 pop을 진행하고 stack2에 쌓는다.
- ">" 가 나올경우 stack2에서 pop을 진행하고 stack1에 쌓는다.
- 마지막으로 stack2에 있는 문자를 반전시킨후 stack1 뒤에 붙혀준다.
이렇게 진행을 했을경우 커서를 한번 옮길때 O(1) 두번만 진행되기 때문에 하나의 스택을 사용한 경우보다
훨씬 효율적이라고 생가된다.
전체 코드는 다음 Github 링크에 있습니다. 전체코드보기
질문과 피드백은 언제나 감사드립니다.
반응형
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[Seop's의 코드풀이] 백준 1599 민식어 - Python (0) | 2020.08.11 |
---|---|
[Seop's의 코드풀이] 백준 10799 쇠막대기 - Python (0) | 2020.08.02 |
[Seop's의 코드풀이] 백준 9020 골드바흐의 추측 - Python (0) | 2020.07.20 |
[Seop's의 코드풀이] 백준 2504 괄호의 값 - Python (0) | 2020.06.23 |
[Seop's의 코드풀이] 백준 6416 트리인가? - Python (0) | 2020.06.15 |
Comments