[algorithm] 백준 1406번 에디터

2026. 1. 11. 11:20·algorithm/연결 리스트
반응형

 

연결리스트의 개념을 잘 숙지했는지

판단하기 위한 기본 문제다

 

#include <iostream>
#include <string>
#include <list>
using namespace std;

int main() {
    string str;
    cin >> str;

    int n;
    cin >> n;

    list<char> l;
    for(char c : str) l.push_back(c);

    char cm;
    list<char>::iterator cursor = l.end();
    for(int tmp=0; tmp<n; tmp++)
        {
            cin >> cm;
            if(cm == 'L')
            {
                if(cursor != l.begin()) cursor--;
            }

            if(cm == 'D')
            {
                if(cursor != l.end()) cursor++;
            }

            if(cm == 'B')
            {
                if(cursor != l.begin())
                {
                    cursor--;
                    cursor = l.erase(cursor); // 커서값 갱신을 해줘야함 point!
                }
            }

            if(cm == 'P')
            {
                char cm2;
                cin >> cm2;
                l.insert(cursor, cm2);
            }
        }

    for(char tmp : l)
        {
            cout << tmp;
        }
    
    return 0;
}

 

iterator가 begin()일 때 앞으로 또 땡기면(cursor-- 하면)

정의되지 않은 동작이 발생하고 쓰레기 값이 나올 수 있어 유의해야한다

end()일 때도 마찬가지로 cursor++ 하면 안된다

 

erase함수 사용시 변수로 return값을 받아주지 않으면

컴파일 에러는 아니지만

그 뒤에도 반복자를 계속해서 사용한다면 문제가 될 수 있어

꼭 받아주는게 중요하다

 

추가로 list,vector,deque 등에서 end()는 맨 뒤 원소 다음 위치를 가리킨다

그래서 값으로 접근하면 정의되지 않은 동작 발생, 쓰레기값이 나오므로 주의해야한다

반복문 종료 조건이나 insert 삽입 위치 정도로만 사용하는 것이 적절하다

반응형

'algorithm > 연결 리스트' 카테고리의 다른 글

[algorithm] 백준 1158번 요세푸스 문제  (0) 2026.01.11
[algorithm] 백준 5397번 키로거  (0) 2026.01.11
'algorithm/연결 리스트' 카테고리의 다른 글
  • [algorithm] 백준 1158번 요세푸스 문제
  • [algorithm] 백준 5397번 키로거
20puddle
20puddle
20puddle 님의 블로그 입니다.
  • 20puddle
    20puddle 님의 블로그
    20puddle
  • 전체
    오늘
    어제
    • 분류 전체보기 (100)
      • Spring boot (5)
      • git & github (5)
      • algorithm (47)
        • theory (3)
        • 배열 (7)
        • 연결 리스트 (3)
        • 스택 (5)
        • 큐 (3)
        • 덱 (2)
        • 기초 코드 (19)
        • BFS (5)
      • AI (43)
        • Machine Learning (35)
        • Deep Learning (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    연결리스트
    AI
    ML
    git
    인공지능
    딥러닝
    오프라인 학습
    백준
    알고리즘
    DL
    홀드아웃 검증
    Aimers
    그레디언트 클리핑
    주성분변환
    머신러닝
    게시판
    github
    Spring Boot
    Java
    list
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.3
20puddle
[algorithm] 백준 1406번 에디터
상단으로

티스토리툴바