[백준] 11866번 : 요세푸스 문제 0 (C++)

2024. 3. 13. 13:53·Programming/C++ - 백준
반응형

 


문제


풀이

 요세푸스 문제는 큐(Queue)를 이용해 풀이할 수 있다.

 

  1. queue를 사용하기 위한 헤더 파일을 추가한다.
  2. 큐에 1부터 n까지의 원소를 넣는다.
#include <queue>	// queue를 이용하기 위한 헤더 파일
	int n, k;
	queue<int> q; // queue 선언

	cin >> n >> k;
	for (int i = 1; i <= n; i++) {	// 큐에 1부터 n까지 원소 넣기
		q.push(i);
	}

 

  3. 1부터 k-1까지의 원소를 큐의 뒤로 보내고, 삭제한다.

  4. k번째 원소를 출력한다.

  5. 만약, 큐의 크기가 2 이상이라면, ", "를 출력한다.

  6. k번째 원소를 삭제한다.

 

  7. 큐에 원소가 없어질 때까지, 3부터 6의 과정을 반복한다!  

 

	while (q.empty() == 0) { // 큐에 원소가 있다면,
		for (int i = 1; i < k; i++) { // 1부터 k-1까지의 원소를
			q.push(q.front()); // 큐의 가장 뒤로 보내고
			q.pop(); // 삭제한다.
		}
		cout << q.front(); // 가장 앞에 남은 k번째 원소를 출력한다.
		
		if (q.size() >= 2) { // 만약, 큐의 크기가 2 이상이라면,
			cout << ", "; // ", "를 붙인다.
		}
		q.pop();	// k번째 원소를 삭제한다!
	}

 


코드

#include <iostream>
#include <queue>

using namespace std;

int main() {
	int n, k;
	queue<int> q;

	cin >> n >> k;
	for (int i = 1; i <= n; i++) {	// 큐에 1부터 n까지 원소 넣기
		q.push(i);
	}
	
	cout << "<";

	while (q.empty() == 0) { // 큐에 원소가 있다면,
		for (int i = 1; i < k; i++) { // 1부터 k-1까지의 원소를
			q.push(q.front()); // 큐의 가장 뒤로 보내고
			q.pop(); // 삭제한다.
		}
		cout << q.front(); // 가장 앞에 남은 k번째 원소를 출력한다.
		
		if (q.size() >= 2) { // 만약, 큐의 크기가 2 이상이라면,
			cout << ", "; // ", "를 붙인다.
		}
		q.pop();	// k번째 원소를 삭제한다!
	}
	cout << ">";
}

결과

 

 

 

11866번: 요세푸스 문제 0

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)

www.acmicpc.net

 

반응형
저작자표시 (새창열림)

'Programming > C++ - 백준' 카테고리의 다른 글

[백준] 11650번 : 좌표 정렬하기 | Sort 함수와 Compare & Array와 Vector 풀이 (C++)  (1) 2024.03.14
[백준] 11931번 : 수 정렬하기 4 (C++)  (2) 2024.03.13
[백준] 10845번 : 큐 (C++)  (1) 2024.03.11
[백준] 10828번 : 스택 (C++)  (0) 2024.03.11
[백준] 2798번 : 블랙잭 (C++)  (1) 2024.03.10
'Programming/C++ - 백준' 카테고리의 다른 글
  • [백준] 11650번 : 좌표 정렬하기 | Sort 함수와 Compare & Array와 Vector 풀이 (C++)
  • [백준] 11931번 : 수 정렬하기 4 (C++)
  • [백준] 10845번 : 큐 (C++)
  • [백준] 10828번 : 스택 (C++)
지구코드
지구코드
IT를 공부하고 있는 지구의 코딩공간입니다!
  • 지구코드
    지구의 코딩공간
    지구코드
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 개발 기록
      • [프디아] 파이널 프로젝트
      • Back-end
        • Spring
        • Django
      • Programming
        • 알고리즘
        • C++ - 백준
      • Cloud
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    별 찍기
    MSA
    알파코캠퍼스
    AWS
    edgelocation
    dp
    KDT교육
    fill 함수
    C++
    부트캠프
    프로디지털아카데미
    구조체 벡터
    이진탐색
    피보나치 수
    시간복잡도
    awscloudclubs
    binary_search
    부분 문자열 추출
    백준
    시간초과
    EC2
    다이내믹 프로그래밍
    알파코
    Cloud
    슬라이딩윈도우
    k디지털트레이닝
    정렬
    큐
    프디아
    신한투자증권
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.3
지구코드
[백준] 11866번 : 요세푸스 문제 0 (C++)
상단으로

티스토리툴바