์šฐ๊ทœ์ด์ธ์šฐ์œค
Eager To Learn ๐ŸŒŒ
์šฐ๊ทœ์ด์ธ์šฐ์œค
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿก ํ™ˆ
  • ๐Ÿš€ ๊นƒํ—ˆ๋ธŒ
  • โ›… ํƒœ๊ทธ ํด๋ผ์šฐ๋“œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (217)
    • ๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป PS (170)
      • JAVA (82)
      • MYSQL (1)
      • Docker (2)
      • PYTHON (24)
      • LeetCode 150 (39)
      • Algorithm ๊ธฐ๋ฒ• (1)
      • ๋ฐ”ํ‚น๋… (21)
    • ๋ธ”๋กœ๊ทธ ์ด์‚ฌ (0)
    • Error (1)
    • CS (15)
      • DataBase (2)
      • OS (7)
      • Network (1)
      • Spring (1)
      • ์ž๋ฃŒ๊ตฌ์กฐ (3)
      • Java (1)
    • Learned (7)
      • Spring (7)
    • ๊ฐœ๋ฐœ์„œ์  (15)
      • ๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ (1)
      • ์˜ค๋ธŒ์ ํŠธ - ์กฐ์˜ํ˜ธ (7)
      • ์นœ์ ˆํ•œ SQL ํŠœ๋‹ (7)
    • ํšŒ๊ณ  (2)
hELLO ยท Designed By ์ •์ƒ์šฐ.
์šฐ๊ทœ์ด์ธ์šฐ์œค
๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป PS/๋ฐ”ํ‚น๋…

[JAVA] ๋ฐฑ์ค€ 13414๋ฒˆ ใ€S3.์ˆ˜๊ฐ•์‹ ์ฒญใ€‘

๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป PS/๋ฐ”ํ‚น๋…

[JAVA] ๋ฐฑ์ค€ 13414๋ฒˆ ใ€S3.์ˆ˜๊ฐ•์‹ ์ฒญใ€‘

2023. 8. 29. 12:22

๋ฌธ์ œ

 

13414๋ฒˆ: ์ˆ˜๊ฐ•์‹ ์ฒญ

์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋Š” ํ‘œ์ค€ ์ž…๋ ฅ์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ž…๋ ฅ์€ 1๊ฐœ์˜ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ์ž…๋ ฅ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ๊ณผ๋ชฉ์˜ ์ˆ˜๊ฐ• ๊ฐ€๋Šฅ ์ธ์› K(1 โ‰ค K โ‰ค 100,000)์™€ ํ•™์ƒ๋“ค์ด ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ ์ˆœ์„œ๋ฅผ ๊ธฐ๋กํ•œ ๋Œ€๊ธฐ๋ชฉ

www.acmicpc.net


ํ’€์ด

๋จผ์ € ์ด ๋ฌธ์ œ๋Š”, ์ˆ˜๊ฐ• ์‹ ์ฒญ์„ ํ•œ ํ•™์ƒ๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ์ž๋ฃŒ๊ตฌ์กฐ์— ๋„ฃ์–ด์•ผ ํ•˜๋Š”๋ฐ,

 

์ด๋ฏธ ๊ทธ ์ž๋ฃŒ๊ตฌ์กฐ์— ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ํ•™์ƒ์ธ ๊ฒฝ์šฐ, ์ œ์ผ ๋’ท ์ˆœ์„œ๋กœ ๋‹ค์‹œ ์ง‘์–ด๋„ฃ์–ด์•ผ ํ•œ๋‹ค.

 

์ด ์•„์ด๋””์–ด๋Š”, ์ด ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ๋ˆ„๊ตฌ๋‚˜ ๋– ์˜ฌ๋ ธ์„ํ…๋ฐ

 

์ƒ๊ฐ๋ณด๋‹ค ๊ฐ„๋‹จํ•˜๊ฒŒ ํ’€๋ฆด ์ค„ ์•Œ์•˜๋Š”๋ฐ ์•„๋‹ˆ์—ˆ๋‹ค.

 

 

1๏ธโƒฃ map๊ณผ priority queue ์‚ฌ์šฉ

set์„ ์ด์šฉํ•ด์„œ ์ค‘๋ณต์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ˆ˜๊ฐ• ์‹ ์ฒญ ์ˆœ์„œ๋ฅผ ํ™•์ธํ•  ์ˆœ ์—†๋‹ค.

 

		HashMap<String, Integer> map = new HashMap<>();

        for (int i = 0; i < L; i++) {
            String id = br.readLine();
            if (map.containsKey(id)) {
                map.remove(id);
                map.put(id, i);
            } else {
                map.put(id, i);
            }
        }

 

๋”ฐ๋ผ์„œ, map์„ ์ด์šฉํ•ด์„œ ์ˆ˜๊ฐ• ์‹ ์ฒญ ์ˆœ์„œ ์ •๋ณด๊นŒ์ง€ ํ•จ๊ป˜ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋ ‡๊ฒŒ, map์— ์ด๋ฏธ ์ˆ˜๊ฐ• ์‹ ์ฒญ ์ด๋ ฅ์ด ์žˆ๋Š” ํ•™์ƒ์˜ ๊ฒฝ์šฐ ์‚ญ์ œํ•˜๊ณ  ๋‹ค์‹œ ์ž…๋ ฅํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

map์— ์ˆœ์„œ ์ •๋ณด๋ฅผ ๋„ฃ์—ˆ์ง€๋งŒ, ์ •๋ ฌ์€ ๋”ฐ๋กœ ๋ถˆ๊ฐ€๋Šฅ ํ•˜๋ฏ€๋กœ

 

map์— ์ž…๋ ฅ๋œ ์ˆœ์„œ์— ๋”ฐ๋ผ ์ •๋ ฌํ•˜๊ธฐ ์œ„ํ•ด, map์— ์žˆ๋Š” ์›์†Œ๋“ค์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์šฐ์„  ์ˆœ์œ„ ํ์— ๋„ฃ์—ˆ๋‹ค.

 

๋‹จ, ์šฐ์„ ์ˆœ์œ„ ํ์— ์ง‘์–ด๋„ฃ์„ ๋•Œ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•ด์„œ ์ •๋ ฌ ์กฐ๊ฑด๊ณผ ํ•จ๊ป˜ ๊ตฌํ˜„ํ•˜๋ฉด ๋œ๋‹ค.

 

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] input = br.readLine().split(" ");
        int K = Integer.parseInt(input[0]), L = Integer.parseInt(input[1]);
        HashMap<String, Integer> map = new HashMap<>();

        for (int i = 0; i < L; i++) {
            String id = br.readLine();
            if (map.containsKey(id)) {
                map.remove(id);
                map.put(id, i);
            } else {
                map.put(id, i);
            }
        }

        PriorityQueue<Student> pq = new PriorityQueue<>((a, b) -> a.idx - b.idx);
        for (String s : map.keySet()) {
            pq.offer(new Student(s, map.get(s)));
        }

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < K; i++) {
            if (!pq.isEmpty()) {
                sb.append(pq.poll().id + "\n");
            }
        }
        System.out.println(sb);
    }

    static class Student {
        String id;
        int idx;

        public Student(String id, int idx) {
            this.id = id;
            this.idx = idx;
        }
    }
}

 

๊ฒฐ๊ณผ

 

2๏ธโƒฃ LinkedHashSet ์‚ฌ์šฉ

์ด ๋ฌธ์ œ๋ฅผ ๋” ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†๋‚˜ ์ฐพ์•„๋ณด๋‹ค๊ฐ€ ์ฒ˜์Œ ์•Œ๊ฒŒ๋œ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

 

set์ธ๋ฐ, ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•ด์ฃผ๋Š” set์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

๋”ฐ๋ผ์„œ, ์ด ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์•Œ๊ณ  ์žˆ์—ˆ๋‹ค๋ฉด ์ •~~๋ง๋กœ ์‰ฝ๊ฒŒ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

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

public class Main2 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] input = br.readLine().split(" ");
        int K = Integer.parseInt(input[0]), L = Integer.parseInt(input[1]);
        LinkedHashSet<String> set = new LinkedHashSet<>();

        for (int i = 0; i < L; i++) {
            String id = br.readLine();
            if (set.contains(id)) {
                set.remove(id);
                set.add(id);
            } else {
                set.add(id);
            }

        }

        StringBuilder sb = new StringBuilder();
        for (String id : set) {
            sb.append(id + "\n");
            if (--K == 0) {
                break;
            }
        }
        System.out.println(sb);
    }

}

 

๊ฒฐ๊ณผ

1๋ฒˆ ๋ฐฉ๋ฒ• ๋ณด๋‹ค ๋”ฐ๋ฅธ ์‹œ๊ฐ„์œผ๋กœ ํ†ต๊ณผํ•˜์˜€๋‹ค.

  • ๋ฌธ์ œ
  • ํ’€์ด
  • 1๏ธโƒฃ map๊ณผ priority queue ์‚ฌ์šฉ
  • ๊ฒฐ๊ณผ
  • 2๏ธโƒฃ LinkedHashSet ์‚ฌ์šฉ
  • ๊ฒฐ๊ณผ
'๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป PS/๋ฐ”ํ‚น๋…' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [JAVA] ๋ฐฑ์ค€ 23326๋ฒˆ ใ€G3.ํ™์ต ํˆฌ์–ด๋ฆฌ์ŠคํŠธใ€‘
  • [JAVA] ๋ฐฑ์ค€ 22939๋ฒˆ ใ€G4.๋ฌธ์ œ ์ถ”์ฒœ ์‹œ์Šคํ…œ Version 1ใ€‘
  • [JAVA] ๋ฐฑ์ค€ 20166๋ฒˆ ใ€G4.๋ฌธ์ž์—ด ์ง€์˜ฅ์— ๋น ์ง„ ํ˜ธ์„ใ€‘
  • [JAVA] ๋ฐฑ์ค€ 20366๋ฒˆ ใ€G3.๊ฐ™์ด ๋ˆˆ์‚ฌ๋žŒ ๋งŒ๋“ค๋ž˜?ใ€‘
์šฐ๊ทœ์ด์ธ์šฐ์œค
์šฐ๊ทœ์ด์ธ์šฐ์œค
๊ฐœ๋ฐœ์ž ๊ฟˆ๋‚˜๋ฌด

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.