๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 20680_Birds Rituals

๋ฟŒ์•ผ._. 2025. 9. 29. 17:19
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/20680)

< Birds Rituals >

 

๋ฌธ์ œ ํ’€์ด 

 

๋‹ค์Œ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์›€์ง์ธ๋‹ค.

insert : ์ฃผ์–ด์ง„ ์ธ๋ฑ์Šค์— ์ถ”๊ฐ€
depart : ์‚ญ์ œ
relocate : ํ˜„์žฌ ์žˆ๋˜ ์ƒˆ ์ด๋™

 

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.ArrayList;
import java.util.StringTokenizer;

public class _20680_ { // Birds Rituals

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

		int n = Integer.parseInt(st.nextToken());
		int s = Integer.parseInt(st.nextToken());

		ArrayList<String> list = new ArrayList<>();
		st = new StringTokenizer(bf.readLine());

		for (int i = 0; i < n; i++) {
			list.add(st.nextToken());
		}

		for (int i = 0; i < s; i++) {
			st = new StringTokenizer(bf.readLine());

			String cmd = st.nextToken();
			String name = st.nextToken();

			if (cmd.equals("insert")) {
				int idx = Integer.parseInt(st.nextToken());
				list.add(idx, name);

			} else if (cmd.equals("depart")) {
				list.remove(name);

			} else {
				int idx = list.indexOf(name);
				int move = Integer.parseInt(st.nextToken());

				if (move == 0) {
					continue;
				}
				
				if(move < 0) {
					list.add(idx + move, name);
					list.remove(idx+1);
				}else {
					list.add(idx + move+1, name);
					list.remove(idx);
				}
				
			}
		}

		for (String name : list) {
			bw.write(name + " ");
		}
		bw.flush();
	}
}
๋ณ€์ˆ˜)
n, s : ์ฒ˜์Œ ์ค„์— ์•‰์•„ ์žˆ๋Š” ์ƒˆ๋“ค์˜ ์ˆ˜, ํ–‰๋™์˜ ์ˆ˜
list : ์•‰์•„์žˆ๋Š” ์ƒˆ ์ˆœ์„œ 
cmd, name : ํ–‰๋™ ์œ ํ˜•, ์ƒˆ ์ด๋ฆ„
idx : ์ƒˆ ์œ„์น˜
move : ์ด๋™ ๋ฒ”์œ„

 

์ฒ˜์Œ ์ค„์— ์•‰์•„ ์žˆ๋Š” ์ƒˆ๋“ค์˜ ์ˆ˜์™€ ํ–‰๋™์˜ ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ์ƒˆ๋“ค์˜ ์ˆ˜๋งŒํผ ์ƒˆ ์ด๋ฆ„์„ ์ž…๋ ฅ๋ฐ›์•„ ArrayList์— ์ €์žฅํ•œ๋‹ค. ํ–‰๋™์˜ ์ˆ˜๋งŒํผ ๋‹ค์Œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

1) ํ–‰๋™ ์œ ํ˜•, ์ƒˆ ์ด๋ฆ„ ์ž…๋ ฅ

2) insert๋ผ๋ฉด idx ์œ„์น˜์— ์ƒˆ ์ถ”๊ฐ€

3) depart๋ผ๋ฉด ์ƒˆ ์ œ๊ฑฐ

4) relocate๋ผ๋ฉด ๋จผ์ € ํ˜„์žฌ ์ƒˆ์˜ ์œ„์น˜๋ฅผ ์ฐพ์Œ. ์ด๋™ ๋ฒ”์œ„๊ฐ€ 0์ด๋ผ๋ฉด ์›€์ง์ด์ง€ ์•Š๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ๋‹ค์Œ ํ–‰๋™์œผ๋กœ ๋„˜์–ด๊ฐ€๊ณ , 0์ด ์•„๋‹ˆ๋ผ๋ฉด ์ƒˆ ์ด๋™ ํ›„ ์›๋ž˜ ์œ„์น˜์— ์žˆ๋˜ ์ƒˆ๋ฅผ ์ œ๊ฑฐ

 

์ตœ์ข… ArrayList์˜ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.  



 

'๐ŸŒžAlgorithm > ๐Ÿ”ฅBaekjoon' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Baekjoon] 18206_Soft Passwords  (0) 2025.09.26
[Baekjoon] 8978_VLAK  (0) 2025.09.25
[Baekjoon] 31023_Hit Song  (0) 2025.09.24
[Baekjoon] 24571_Good Groups  (0) 2025.09.18
[Baekjoon] 11260_Cell Counting  (0) 2025.09.17