문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/81303
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제의 특성상 삽입, 삭제가 O(1)에 이루어져야 하므로 링크드 리스트 자료구조를 통해 푸는 문제였습니다.
c++에서는 stl로 list를 제공하기는 하나 많이 써본 경험이 없으므로 이중 연결 리스트를 직접 구조체를 구현하여 풀었습니다.
이중 연결리스트에 관한 자세한 코드는 아래의 링크를 참고해주세요.
https://jaimemin.tistory.com/169
C++ Fundamentals of Data Structures(C++ 자료구조론) 4.10 이중연결리스트(Doubly Linked List)
/* 이중 연결리스트 Doubly LinkedList */ #include using namespace std; class DblList; class DblListNode { private: int data; DblListNode *left, *right; public: ..
jaimemin.tistory.com
알고리즘은 아래와 같습니다.
1. 이중 연결리스트를 구현하고 현재 주어진 표를 전 처리합니다.
2. iterator 변수를 선언하고 k번째 노드를 가리키도록 합니다.
3. Z 명령어가 최근 삭제된 행을 원래대로 복구하는 명령어이므로 스택을 써야 합니다. 따라서 deletedNodes 스택을 선언해줍니다.
4. 주어진 명령어대로 표 편집을 진행합니다.
5. 표 상태를 나타내는 answer를 업데이트해주고 반환해줍니다.
개발환경: Programmers IDE
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > programmers' 카테고리의 다른 글
[Programmers] GPS (0) | 2022.07.09 |
---|---|
[Programmers] 리틀 프렌즈 사천성 (0) | 2022.07.09 |
[Programmers] 금과 은 운반하기 (0) | 2022.07.09 |
[Programmers] 합승 택시 요금 (0) | 2022.07.09 |
[Programmers] 최적의 행렬 곱셈 (0) | 2022.06.25 |