01
16

 

https://www.acmicpc.net/problem/1021

 

1021๋ฒˆ: ํšŒ์ „ํ•˜๋Š” ํ

์ฒซ์งธ ์ค„์— ํ์˜ ํฌ๊ธฐ N๊ณผ ๋ฝ‘์•„๋‚ด๋ ค๊ณ  ํ•˜๋Š” ์ˆ˜์˜ ๊ฐœ์ˆ˜ M์ด ์ฃผ์–ด์ง„๋‹ค. N์€ 50๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๊ณ , M์€ N๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ์ง€๋ฏผ์ด๊ฐ€ ๋ฝ‘์•„๋‚ด๋ ค๊ณ  ํ•˜๋Š” ์ˆ˜์˜ ์œ„์น˜๊ฐ€

www.acmicpc.net


์˜ค๋‹ต๋…ธํŠธ(ํ‘ธ๋Š” ๋™์•ˆ ์‚ฌ๊ณ ๊ณผ์ • ๋ฐ ๊ฐœ์„ ์ )

์˜ค๋‹ต์€ ์•„๋‹ˆ๊ณ , ๋ฑ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๊ณ  ์ฒ˜์Œ ํ’€์–ด๋ณด๋Š” ๋ฌธ์ œ์˜€๋‹ค. ArrayDeque์ด ์žˆ๋Š” ๊ฑธ ์•Œ๊ณ  ์žˆ์–ด์„œ ์ด๊ฑฐ๋กœ ํ’€์–ด๋ณด๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ์ค‘๊ฐ„๊ฐ’ ํƒ์ƒ‰์„ ์œ„ํ•ด indexOf๊ฐ€ ์žˆ๋‚˜ ๋ดค๋”๋‹ˆ ์—†์—ˆ๋‹ค. ๊ฒ€์ƒ‰์„ ํ•ด๋ณด๋‹ˆ LinkedList๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ๋งŒ๋“ค์–ด๋„ ๋ฑ ์ฒ˜๋Ÿผ ์“ธ ์ˆ˜ ์žˆ์–ด์„œ ํ•ด๋‹น ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

 

์ฒ˜์Œ์— ๋ฌธ์ œ ์ดํ•ด๊ฐ€ ์•ˆ๋์—ˆ๋‹ค. N์„ ์ฃผ๊ณ  ๋ช‡๋ฒˆ์งธ๋ฅผ ๋ฝ‘์„ ๊ฑด์ง€๊ฐ€ ๋ฌธ์ œ์˜€๋Š”๋ฐ, N๊นŒ์ง€์˜ ์ˆ˜๊ฐ€ ์–ด๋–ค ์ˆœ์„œ๋กœ ์„ž์—ฌ์žˆ์„ ์ค„ ์•Œ๊ณ  ์ด๋ ‡๊ฒŒ ๋ฝ‘๋‚˜ ์ƒ๊ฐํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค ๋ฌด์Šจ ์ˆ˜๋ฅผ ๋ฝ‘๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ๋ช‡๋ฒˆ ์งธ๋ฅผ ๋ฝ‘๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ์œ„์น˜๋ฅผ ๊ณ ๋ คํ•˜๋Š” ๋ฌธ์ œ์˜€๋‹ค. ๋”ฐ๋ผ์„œ ๊ทธ๋ƒฅ 1๋ถ€ํ„ฐ N๊นŒ์ง€ ์ญ‰ ์ฑ„์›Œ์ฃผ๋ฉด ๋์ด๋‹ค.


์ •๋‹ต์ฝ”๋“œ

import java.util.*;
import java.io.*;

public class Main {
    public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int pick = sc.nextInt();
        int cnt = 0;
        LinkedList<Integer> dq = new LinkedList<>();
        // ArrayDeque ์„ ์‚ฌ์šฉํ•œ deque์€ indexOf๊ฐ€ ์—†๋‹ค.
        // Deque<Integer> dq = new ArrayDeque<>();
        for (int i = 1; i <= n; i++) {
            dq.offer(i);
        }
        for (int i = 0; i < pick; i++) {
            int t = sc.nextInt();
            // ํƒ€๊ฒŸ ์œ„์น˜ ํƒ์ƒ‰
            int target = dq.indexOf(t);
            int m= dq.size() / 2;
            if (!dq.isEmpty() && t != dq.peekFirst()) {
                if (target <= m) { // ํƒ€๊ฒŸ์ด ์™ผ์ชฝ์— ์œ„์น˜ํ•œ ๊ฒฝ์šฐ -> ์™ผ์ชฝ์œผ๋กœ ๋Œ๋ฆผ
                    for (int j = 0; j < target; j++) {
                        dq.addLast(dq.pollFirst());
                        cnt++;
                    }
                    int tmp = dq.pollFirst();
//                    System.out.println(tmp);
                } else {
                    for (int j = 0; j < dq.size() - target; j++) {
                        dq.addFirst(dq.pollLast());
                        cnt++;
                    }
                    int tmp = dq.pollFirst();
//                    System.out.println(tmp);
                }
            } else {
                dq.pollFirst();
            }
        }
        System.out.println(cnt);
    }
}

 

 

์ฃผ์„ ์ฒ˜๋ฆฌํ•ด๋‘” ํ”„๋ฆฐํŠธ๋ฌธ์€ ์˜ฌ๋ฐ”๋ฅธ ๊ฐ’์ด ์œ„์น˜ํ•ด ์žˆ๋‚˜ ๋ณด๋ ค๊ณ  ๋””๋ฒ„๊น…์šฉ์œผ๋กœ ๋„ฃ์–ด๋‘” ๊ฒƒ์ด๋‹ค. 

IDE๊ฐ€ ์—†๋Š” ํ™˜๊ฒฝ์—์„œ๋Š” offer, poll, addLast, addFirst, pollLast, pollFirst, indexOf์™€ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋“ค์ด ์žˆ๋Š” ์ง€ ์•Œ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋ฐ˜๋ณตํ•ด์„œ ๋ฑ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด๋Š” ์ˆ˜ ๋ฐ–์— ์—†์„ ๊ฒƒ ๊ฐ™๋‹ค.

 

 

๋„์›€์ด ๋๋‹ค๋ฉด ๋Œ“๊ธ€์ด๋‚˜ ๊ณต๊ฐ ๋ฒ„ํŠผ ํ•œ ๋ฒˆ์”ฉ ๋ˆ„๋ฅด๊ณ  ๊ฐ€์ฃผ์„ธ์š”! ๋กœ๊ทธ์ธ ์•ˆํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค ^_^

 

๋ฐ˜์‘ํ˜•
COMMENT