🌞Algorithm/🔥Baekjoon

[Baekjoon] 1835_카드

뿌야._. 2024. 4. 3. 21:08

Silver IV

문제(출처: https://www.acmicpc.net/problem/1835)

< 카드 >

 

문제 풀이 

 

Deque를 사용하여 구현한다.

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayDeque;
import java.util.Deque;

public class _1835_ { // 카드

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

		int n = Integer.parseInt(bf.readLine());
		int arr[] = new int[n];

		Deque<Integer> queue = new ArrayDeque<>();
		for (int i = 0; i < n; i++) {
			queue.add(i);
		}

		int idx = 1;
		while (!queue.isEmpty()) {
			for (int i = 0; i < idx; i++) {
				queue.addLast(queue.pollFirst());
			}
			int num = queue.pollFirst();
			arr[num] = idx++;
		}

		for(int i=0; i<n; i++) {
			bw.write(arr[i]+" ");
		}
		bw.flush();
	}
}
변수)
n : 카드 개수
arr : 카드 순서
queue : Deque <Integer>
idx : 반복하는 수
num : 카드 index

 

카드의 개수 n을 입력받는다. Deque에 카드 순서(0~n-1)를 저장한다. queue가 빌 때까지 다음 과정을 반복한다.

 

1) idx 수만큼 queue 맨 앞 값을 뽑아 맨 뒤로 저장한다.

2) queue에서 맨 앞 값을 뽑아 그 값을 num에 저장한다.

3) arr [num] = idx 한다.

 

최종 배열 값을 출력한다.



 

'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글

[Baekjoon] 1347_미로 만들기  (0) 2024.04.05
[Baekjoon] 21919_소수 최소 공배수  (0) 2024.04.04
[Baekjoon] 1531_투명  (0) 2024.04.02
[Baekjoon] 14232_보석 도둑  (1) 2024.04.01
[Baekjoon] 9440_숫자 더하기  (0) 2024.03.29