[algorithm] 백준 1158번 요세푸스 문제

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

 

#include <iostream>
#include <list>

using namespace std;

int main() {
    int n,k;
    int cnt = 0;
    cin >> n >> k;
    list<int> l;
    list<int> res;
    for(int tmp=0; tmp<n; tmp++) l.push_back(tmp+1);

    list<int>::iterator p = l.begin();
    while(l.size() != 1)
        {
            cnt = k;
            while((cnt-1) != 0)
                {
                    p++;
                    if(p == l.end()) p = l.begin();
                    cnt--;
                }
            res.push_back(*p);
            p = l.erase(p);
            if(p == l.end()) p = l.begin();
        }
    res.push_back(*p);

    int count = 1;
    
    if (res.size() == 1)
    {
        cout << "<" << *p << ">";
    }
        
    else
    {
        cout << "<";    
        for(int tmp : res)
        {
            if(count == 1)
            {
                 cout << tmp << ",";
            }
            else if(res.size() == count) cout << " " << tmp;
            else cout << " " << tmp << ",";
            count++;
        }
        cout << ">";
    }

    return 0;
}

 

우선 1~n(n은 입력값)까지를 담은 배열을 만들고

배열의 크기가 1이 될때까지

반복자를 기준으로 k번째 원소를 제거해 나가면된다

 

만약 반복자가 end()로 갔다면 begin()으로 설정해주고

erase 할 때도 return값으로 end()가 왔다면 begin()으로 설정해야한다

 

k값을 cnt로 복사시킨 이유는

erase 이후 다시 k번째를 삭제해야하는데

k는 1씩 빼져서 1이 되어있는 상태고 초기화를 시켜야하는데

원래 k 입력값을 모르니까 cnt로 복사한 것이다

 

이 문제는 결과를 출력할 때

맨 앞과 맨 뒤에 <, >를 출력해줘야한다

이거 때문에 몇 번 오류가 났었다 -.-

코드를 간소화하는 연습을 해야할 필요가 있는 것 같다

반응형

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

[algorithm] 백준 5397번 키로거  (0) 2026.01.11
[algorithm] 백준 1406번 에디터  (0) 2026.01.11
'algorithm/연결 리스트' 카테고리의 다른 글
  • [algorithm] 백준 5397번 키로거
  • [algorithm] 백준 1406번 에디터
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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.3
20puddle
[algorithm] 백준 1158번 요세푸스 문제
상단으로

티스토리툴바