๐Ÿ”ฅ[99ํด๋Ÿฝ ์ฝ”ํ…Œ ์Šคํ„ฐ๋””] 37์ผ์ฐจ TIL - ๋ถ€๋“ฑํ˜ธ

HOONSSACยท2024๋…„ 8์›” 27์ผ
1

99Club Coding Test Study

๋ชฉ๋ก ๋ณด๊ธฐ
37/41
post-thumbnail
post-custom-banner

โณ๋ฌธ์ œ

๋‘ ์ข…๋ฅ˜์˜ ๋ถ€๋“ฑํ˜ธ ๊ธฐํ˜ธ โ€˜<โ€™์™€ โ€˜>โ€™๊ฐ€ k๊ฐœ ๋‚˜์—ด๋œ ์ˆœ์„œ์—ด A๊ฐ€ ์žˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด ๋ถ€๋“ฑํ˜ธ ๊ธฐํ˜ธ ์•ž๋’ค์— ์„œ๋กœ ๋‹ค๋ฅธ ํ•œ ์ž๋ฆฟ์ˆ˜ ์ˆซ์ž๋ฅผ ๋„ฃ์–ด์„œ ๋ชจ๋“  ๋ถ€๋“ฑํ˜ธ ๊ด€๊ณ„๋ฅผ ๋งŒ์กฑ์‹œํ‚ค๋ ค๊ณ  ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ œ์‹œ๋œ ๋ถ€๋“ฑํ˜ธ ์ˆœ์„œ์—ด A๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๊ณ  ํ•˜์ž.

A โ‡’ < < < > < < > < >

๋ถ€๋“ฑํ˜ธ ๊ธฐํ˜ธ ์•ž๋’ค์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” ์ˆซ์ž๋Š” 0๋ถ€ํ„ฐ 9๊นŒ์ง€์˜ ์ •์ˆ˜์ด๋ฉฐ ์„ ํƒ๋œ ์ˆซ์ž๋Š” ๋ชจ๋‘ ๋‹ฌ๋ผ์•ผ ํ•œ๋‹ค. ์•„๋ž˜๋Š” ๋ถ€๋“ฑํ˜ธ ์ˆœ์„œ์—ด A๋ฅผ ๋งŒ์กฑ์‹œํ‚ค๋Š” ํ•œ ์˜ˆ์ด๋‹ค.

3 < 4 < 5 < 6 > 1 < 2 < 8 > 7 < 9 > 0

์ด ์ƒํ™ฉ์—์„œ ๋ถ€๋“ฑํ˜ธ ๊ธฐํ˜ธ๋ฅผ ์ œ๊ฑฐํ•œ ๋’ค, ์ˆซ์ž๋ฅผ ๋ชจ๋‘ ๋ถ™์ด๋ฉด ํ•˜๋‚˜์˜ ์ˆ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด ์ˆ˜๋ฅผ ์ฃผ์–ด์ง„ ๋ถ€๋“ฑํ˜ธ ๊ด€๊ณ„๋ฅผ ๋งŒ์กฑ์‹œํ‚ค๋Š” ์ •์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ฃผ์–ด์ง„ ๋ถ€๋“ฑํ˜ธ ๊ด€๊ณ„๋ฅผ ๋งŒ์กฑํ•˜๋Š” ์ •์ˆ˜๋Š” ํ•˜๋‚˜ ์ด์ƒ ์กด์žฌํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 3456128790 ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ 5689023174๋„ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ถ€๋“ฑํ˜ธ ๊ด€๊ณ„ A๋ฅผ ๋งŒ์กฑ์‹œํ‚จ๋‹ค.

5 < 6 < 8 < 9 > 0 < 2 < 3 > 1 < 7 > 4

์—ฌ๋Ÿฌ๋ถ„์€ ์ œ์‹œ๋œ k๊ฐœ์˜ ๋ถ€๋“ฑํ˜ธ ์ˆœ์„œ๋ฅผ ๋งŒ์กฑํ•˜๋Š” (k+1)์ž๋ฆฌ์˜ ์ •์ˆ˜ ์ค‘์—์„œ ์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ์•„์•ผ ํ•œ๋‹ค. ์•ž์„œ ์„ค๋ช…ํ•œ ๋Œ€๋กœ ๊ฐ ๋ถ€๋“ฑํ˜ธ์˜ ์•ž๋’ค์— ๋“ค์–ด๊ฐ€๋Š” ์ˆซ์ž๋Š” { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }์ค‘์—์„œ ์„ ํƒํ•ด์•ผ ํ•˜๋ฉฐ ์„ ํƒ๋œ ์ˆซ์ž๋Š” ๋ชจ๋‘ ๋‹ฌ๋ผ์•ผ ํ•œ๋‹ค.

์ž…๋ ฅ

์ฒซ ์ค„์— ๋ถ€๋“ฑํ˜ธ ๋ฌธ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ k๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ทธ ๋‹ค์Œ ์ค„์—๋Š” k๊ฐœ์˜ ๋ถ€๋“ฑํ˜ธ ๊ธฐํ˜ธ๊ฐ€ ํ•˜๋‚˜์˜ ๊ณต๋ฐฑ์„ ๋‘๊ณ  ํ•œ ์ค„์— ๋ชจ๋‘ ์ œ์‹œ๋œ๋‹ค. k์˜ ๋ฒ”์œ„๋Š” 2 โ‰ค k โ‰ค 9 ์ด๋‹ค.

์ถœ๋ ฅ

์—ฌ๋Ÿฌ๋ถ„์€ ์ œ์‹œ๋œ ๋ถ€๋“ฑํ˜ธ ๊ด€๊ณ„๋ฅผ ๋งŒ์กฑํ•˜๋Š” k+1 ์ž๋ฆฌ์˜ ์ตœ๋Œ€, ์ตœ์†Œ ์ •์ˆ˜๋ฅผ ์ฒซ์งธ ์ค„๊ณผ ๋‘˜์งธ ์ค„์— ๊ฐ๊ฐ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค. ๋‹จ ์•„๋ž˜ ์˜ˆ(1)๊ณผ ๊ฐ™์ด ์ฒซ ์ž๋ฆฌ๊ฐ€ 0์ธ ๊ฒฝ์šฐ๋„ ์ •์ˆ˜์— ํฌํ•จ๋˜์–ด์•ผ ํ•œ๋‹ค. ๋ชจ๋“  ์ž…๋ ฅ์— ๋‹ต์€ ํ•ญ์ƒ ์กด์žฌํ•˜๋ฉฐ ์ถœ๋ ฅ ์ •์ˆ˜๋Š” ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด์ด ๋˜๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค.


์ž…์ถœ๋ ฅ ์˜ˆ 1

์ž…๋ ฅ

2
< >

์ถœ๋ ฅ

897
021

์ž…์ถœ๋ ฅ ์˜ˆ 2

์ž…๋ ฅ

9
> < < < > > > < <

์ถœ๋ ฅ

9567843012
1023765489

โœ๏ธํ’€์ด

์ด ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•ด์„œ๋Š” 0๋ถ€ํ„ฐ 9๊นŒ์ง€์˜ ์ˆซ์ž๋“ค๋กœ ์กฐํ•ฉ์„ ๋งŒ๋“ค๊ณ ,
์กฐํ•ฉํ•œ ์ˆœ์—ด์ด ์ฃผ์–ด์ง„ ๋ถ€๋“ฑํ˜ธ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ง€ ํ™•์ธํ•ด๋‚˜๊ฐ€๋ฉด ๋œ๋‹ค.
๋‹จ, ๊ฐ ์ˆซ์ž๋Š” ํ•œ ๋ฒˆ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ค‘๋ณต์„ ํ”ผํ•ด์•ผ ํ•œ๋‹ค.

๋‚˜๋Š” ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ์ˆซ์ž ์กฐํ•ฉ์„ ๋ฐฑํŠธ๋ž˜ํ‚น(backtracking) ๊ธฐ๋ฒ•์„ ํ†ตํ•ด ์ƒ์„ฑํ•ด๋ณด๊ณ , ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋Š” ์ˆœ์—ด์„ ์ฐพ์•„๋‚ด ๊ทธ ์ค‘ ์ตœ๋Œ€, ์ตœ์†Œ๊ฐ’์„ ์ตœ์ข…์ ์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€๋‹ค.

๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€ ์•Š์„๊นŒ ์ƒ๊ฐ์„ ํ•ด ๋ณด์•˜๋Š”๋ฐ, ์‚ฌ์šฉํ•  ์ˆซ์ž์— ์ค‘๋ณต์ด ์—†๊ณ , k์˜ ๋ฒ”์œ„๊ฐ€ ์ •ํ•ด์ ธ ์žˆ์–ด ์™„์ „ ํƒ์ƒ‰์„ ํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ์—†์„ ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ–ˆ๋‹ค.

๐Ÿ‘พ์ „์ฒด ์ฝ”๋“œ

import java.util.*;

public class Baekjoon_2529 {
    static boolean[] visited = new boolean[10]; // ๋ฐฉ๋ฌธ ์—ฌ๋ถ€
    static String[] num = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}; // ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ˆซ์ž
    static int count; // ์ž…๋ ฅ๋ฐ›์„ ๋ถ€๋“ฑํ˜ธ ๊ฐœ์ˆ˜
    static String[] input; // ์ž…๋ ฅ๋ฐ›์„ ๋ถ€๋“ฑํ˜ธ
    static ArrayList<String> result = new ArrayList<>(); // ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ

    static void permutation(int index, String now) {
        // ์ˆœ์—ด์„ ๋‹ค ๋งŒ๋“ค์—ˆ์„ ๊ฒฝ์šฐ
        // ํ˜„์žฌ๊นŒ์ง€ ๋งŒ๋“  ์ˆซ์ž ์กฐํ•ฉ now๊ฐ€ ๋ถ€๋“ฑํ˜ธ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ง€ ํ™•์ธ
        if (index == count + 1) {
            // ๋ถ€๋“ฑํ˜ธ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•œ๋‹ค๋ฉด ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€
            if (check(now)) {
                result.add(now);
            }
            return;
        }

        // ์ˆœ์—ด ๋งŒ๋“ค๊ธฐ
        for (int i = 0; i < 10; i++) {
            if (!visited[i]) {
                visited[i] = true;
                permutation(index + 1, now + num[i]);
                visited[i] = false; // ๋ฐฑํŠธ๋ž˜ํ‚น์„ ์œ„ํ•ด ๋ฏธ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ
            }
        }
    }

    // ๋ถ€๋“ฑํ˜ธ ์กฐ๊ฑด ํ™•์ธ
    static boolean check(String temp) {
        for (int i = 0; i < count; i++) {
            int a = temp.charAt(i) - '0';
            int b = temp.charAt(i + 1) - '0';
            
            // ๋ถ€๋“ฑํ˜ธ ์กฐ๊ฑด์— ๋งž์ง€ ์•Š์œผ๋ฉด false ๋ฐ˜ํ™˜
            if (input[i].equals(">") && a < b) {
                return false;
            }
            if (input[i].equals("<") && a > b) {
                return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        count = sc.nextInt(); // ๊ฐœ์ˆ˜ ์ž…๋ ฅ
        input = new String[count];

        // ๋ถ€๋“ฑํ˜ธ ์ž…๋ ฅ
        for (int i = 0; i < count; i++) {
            input[i] = sc.next();
        }

        permutation(0, "");
        System.out.println(result.get(result.size() - 1));
        System.out.println(result.get(0));

        sc.close();
    }
}

๐Ÿ‘พ์ฝ”๋“œ ์„ค๋ช…

  1. ๋ถ€๋“ฑํ˜ธ์˜ ๊ฐœ์ˆ˜๋ฅผ count์— ์ž…๋ ฅ๋ฐ›๊ณ , input๋ฐฐ์—ด์— ๋ถ€๋“ฑํ˜ธ์˜ ์ •๋ณด๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.

  2. ์ˆœ์—ด์„ ์ƒ์„ฑํ•ด ๋‚˜๊ฐ€๋Š” ๋ฉ”์„œ๋“œ์ธ permutation์„ ์‹คํ–‰ํ•œ๋‹ค. permutation ๋ฉ”์„œ๋“œ๋Š” ํ˜„์žฌ๊นŒ์ง€ ์„ ํƒํ•œ ์ˆซ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” index์™€ ํ˜„์žฌ๊นŒ์ง€ ์„ ํƒํ•œ ์ˆซ์ž๋ฅผ ๋ฌธ์ž์—ด๋กœ ์ €์žฅํ•˜๋Š” now๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›๋Š”๋‹ค.

  3. ํ˜„์žฌ ๋ฌธ์ž์—ด now์˜ ๊ธธ์ด๊ฐ€ ๋ถ€๋“ฑํ˜ธ ์กฐ๊ฑด์˜ ๊ธธ์ด + 1์ด ๋  ๋•Œ๊นŒ์ง€ ์ˆœ์—ด์„ ์ƒ์„ฑํ•ด ๋‚˜๊ฐ„๋‹ค.

  4. ์ˆœ์—ด์„ ๋‹ค ๋งŒ๋“ค์—ˆ์„ ๊ฒฝ์šฐ ๋ถ€๋“ฑํ˜ธ ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋Š” ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด check๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

  5. check๋ฉ”์„œ๋“œ์—์„œ ๋ถ€๋“ฑํ˜ธ ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•œ๋‹ค๋ฉด, true๋ฅผ ๋ฐ˜ํ™˜ํ•ด ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ result์— ํ•ด๋‹น ์ˆœ์—ด์„ ์ €์žฅํ•œ๋‹ค.

  6. ๋ฐฑํŠธ๋ž˜ํ‚น์„ ํ†ตํ•ด ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ์ˆœ์—ด์„ ๊ณ„์† ์ƒ์„ฑํ•ด ๋‚˜๊ฐ€๋ฉฐ, 4~5๋ฒˆ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ด ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋Š” ์ˆœ์—ด์„ result์— ๊ณ„์†ํ•ด์„œ ์ €์žฅํ•œ๋‹ค.

  7. ์ˆœ์—ด์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋งŒ๋“ค์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, result์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๊ฐ€ ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋Š” ์ˆœ์—ด ์ค‘ ์ตœ๋Œ€๊ฐ’์ด ๋˜๊ณ , ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๊ฐ€ ์ตœ์†Œ๊ฐ’์ด ๋œ๋‹ค.


๐Ÿ”—๋ฌธ์ œ ๋งํฌ
๐Ÿ’ปRepository

profile
ํ›ˆ์‹น์˜ ๊ฐœ๋ฐœ์—ฌํ–‰
post-custom-banner

2๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2024๋…„ 8์›” 27์ผ

์˜คํ˜ธ..! DFS์™€๋Š” ๋˜ ๋‹ค๋ฅธ ์ถ”์ ๊ธฐ๋ฒ•(?)์ธ๊ฐ€์š”..!

1๊ฐœ์˜ ๋‹ต๊ธ€