๐Ÿ“œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ/BAEKJOON\๋ฐฑํŠธ๋ž˜ํ‚น

๋ฐฑ์ค€ 15649๋ฒˆ : N๊ณผ M(1) (JAVA) ๋ฌธ์ œ ํ’€์ด

2020. 12. 1. 17:52
๋ชฉ์ฐจ
  1. ๋ฌธ์ œ ํ’€์ด
๋ฐ˜์‘ํ˜•

www.acmicpc.net/problem/15649

 

15649๋ฒˆ: N๊ณผ M (1)

ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ˆ˜์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค. ์ค‘๋ณต๋˜๋Š” ์ˆ˜์—ด์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ถœ๋ ฅํ•˜๋ฉด ์•ˆ๋˜๋ฉฐ, ๊ฐ ์ˆ˜์—ด์€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค. ์ˆ˜์—ด์€ ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋กœ ์ถœ๋ ฅํ•ด

www.acmicpc.net


 

 

์ด๋ฒˆ ๋ฌธ์ œ๋Š” ๋ฐฑํŠธ๋ž˜ํ‚น ๋‹จ๊ณ„์˜ ์ž…๋ฌธ ๋ฌธ์ œ ์ด๋‹ค.

 

๋ฐฑํŠธ๋ž˜ํ‚น ๋ฌธ์ œ๋Š”, ํŠธ๋ฆฌ ํ˜•ํƒœ์˜ ๋…ธ๋“œ๋“ค์„ ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰ (DFS) ์„ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ, ๋…ธ๋“œ์˜ ์œ ๋ง์„ฑ์„ ํŒ๋‹จํ•˜์—ฌ, ์œ ๋งํ•˜์ง€ ๋ชปํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๊ฐ€์ง€์น˜๊ธฐ๋ฅผ ํ•˜๊ณ (ํ’€์ด์‹œ๊ฐ„ ๋‹จ์ถ•), ๋‹ค์‹œ ๋ถ€๋ชจ ๋…ธ๋“œ๋กœ ๋Œ์•„๊ฐ€์„œ ๋‹ค๋ฅธ ์ž์‹ ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

 

๋ฌธ์ œ ํ’€์ด

 

dfs์˜ ๊ธฐ๋ณธ ํ‹€์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

์žฌ๊ท€๋ฅผ ๋๋‚ผ ์กฐ๊ฑด์„ ์ •ํ•ด์ค˜์•ผ ํ•˜๋Š”๋ฐ, index๊ฐ€ M์ด๋ž‘ ๊ฐ™์„ ์‹œ์ ์— arr ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์›์†Œ๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

// ์žฌ๊ท€๋ฅผ ๋๋‚ผ ์กฐ๊ฑด
if(index == M) {
	for(int i=0; i<M; i++) {
    	System.out.print(arr[i] + " ");
    }
    System.out.println();
    return ;
}

 

์‹คํ–‰ ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์ .

  • ํ•ด๋‹น i๊ฐ€ ์‚ฌ์šฉ ํ–ˆ๋Š”์ง€์— ๋Œ€ํ•œ ์—ฌ๋ถ€
    • ๋งŒ์•ฝ ์‚ฌ์šฉ ์•ˆํ–ˆ๋‹ค๋ฉด, arr[index] = i; ๋ฅผ ๋„ฃ์–ด์ฃผ๊ณ ,  isUsed[i] ์˜ ์‚ฌ์šฉ์—ฌ๋ถ€๋ฅผ ์ฒดํฌ ํ•ด ์ค€๋‹ค.
    • ๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ์žฌ๊ท€ ํ˜ธ์ถœ์„ ํ•ด์ค€๋‹ค.
    • ์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์€, ์žฌ๊ท€ ํ˜ธ์ถœ์ด ๋‹ค ๋๋‚˜๊ณ  ๋‚˜๋ฉด ๋‹ค์‹œ isUsed[i]๋ฅผ false๋กœ ๋ฐ”๊ฟ”์ฃผ๋„๋ก ํ•œ๋‹ค.
for(int i=1; i<=N; i++) {
	if( !isUsed[i] ) {
    	arr[index] = i;
        isUsed[i] = true;
        dfs(index + 1);
        isUsed[i] = false;
    }
}

 

 

 

์ „์ฒด ์ฝ”๋“œ

package Baekjoon;

import java.util.*;

public class BOJ_15694 {
    static int N, M;
    static int[] arr;
    static boolean[] isUsed;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        N = sc.nextInt();
        M = sc.nextInt();

        isUsed = new boolean[N + 1];
        arr = new int[M + 1];

        recursion(0);
    }

    private static void recursion(int idx) {
        if (idx == M) {
            for (int i = 0; i < M; i++) {
                System.out.print(arr[i] + " ");
            }
            System.out.println();
            return;
        }

        for (int i = 1; i <= N; i++) {
            if (!isUsed[i]) {
                isUsed[i] = true;
                arr[idx] = i;
                recursion(idx + 1); // arr์˜ ์ธ๋ฑ์Šค๋ฅผ +1 ์‹œ์ผœ์ค€๋‹ค.
                isUsed[i] = false;
            }
        }
    }
}

 

์‹คํ–‰ ๊ณผ์ •

๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)
  1. ๋ฌธ์ œ ํ’€์ด
'๐Ÿ“œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ/BAEKJOON\๋ฐฑํŠธ๋ž˜ํ‚น' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ๋ฐฑ์ค€ 14889๋ฒˆ : ์Šคํƒ€ํŠธ์™€ ๋งํฌ (JAVA) ๋ฌธ์ œ ํ’€์ด
  • ๋ฐฑ์ค€ 14888๋ฒˆ : ์—ฐ์‚ฐ์ž ๋ผ์›Œ๋„ฃ๊ธฐ (JAVA) ๋ฌธ์ œ ํ’€์ด
  • ๋ฐฑ์ค€ 9663๋ฒˆ : N-Queen (JAVA) ๋ฌธ์ œ ํ’€์ด
  • ๋ฐฑ์ค€ 15650๋ฒˆ : N๊ณผ M(2) (JAVA) ๋ฌธ์ œ ํ’€์ด
iseunghan
iseunghan
๊พธ์ค€ํ•˜๊ฒŒ ์—ด์‹ฌํžˆ..
iseunghan
iseunghan

๊ณต์ง€์‚ฌํ•ญ

  • ์–ด์ œ๋ณด๋‹ค ๋‚˜์€ ์˜ค๋Š˜์ด ๋˜๊ธฐ ์œ„ํ•ด ๐Ÿ”ฅ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (261)
    • ๐Ÿ’ Spring (14)
      • ๊ฐœ๋… ๋ฐ ์ดํ•ด (2)
      • Spring ํ•ต์‹ฌ ๊ธฐ์ˆ  (24)
      • Spring REST API (8)
      • Spring MVC, DB ์ ‘๊ทผ ๊ธฐ์ˆ  (7)
      • Spring Security (23)
      • Spring in Action (1)
    • ๐ŸŒป JAVA (84)
      • ์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ (20)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ž๋ฃŒ๊ตฌ์กฐ (13)
      • ๋””์ž์ธ ํŒจํ„ด (7)
      • ์ •๋ฆฌ์ •๋ฆฌ์ •๋ฆฌ (43)
      • JUnit (1)
    • ๐Ÿ”– Snippets (3)
      • Javascript (3)
    • โš™๏ธ Devops (22)
      • โ› Git (11)
      • ๐Ÿณ Docker (6)
      • ๐Ÿง Linux (3)
      • ๐ŸŒˆ Jenkins (1)
      • ๐Ÿ“ฌ Kafka (1)
    • ๐Ÿ’ฌ ETC.. (4)
      • ๐Ÿ’ป macOS (2)
    • ๐ŸŒง๏ธ ORM (2)
      • JPA (2)
    • ๐Ÿ Python (2)
    • ๐Ÿ“š Databases (15)
      • ์˜ค๋ผํด๋กœ ๋ฐฐ์šฐ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ๋ก ๊ณผ ์‹ค์Šต(2ํŒ) (3)
      • RealMySQL 8.0 (8)
    • ๐Ÿ”ฅ Computer Science (5)
      • ๐Ÿ“ก ๋„คํŠธ์›Œํฌ (5)
    • ๐Ÿท๏ธ ํ˜‘์—… (1)
    • ๐Ÿ“œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (38)
      • BAEKJOON\์ˆ˜ํ•™ 1, ์ˆ˜ํ•™ 2 (8)
      • BAEKJOON\์žฌ๊ท€ (5)
      • BAEKJOON\๋ธŒ๋ฃจํŠธ ํฌ์Šค (3)
      • BAEKJOON\์ •๋ ฌ (1)
      • BAEKJOON\๋ฐฑํŠธ๋ž˜ํ‚น (5)
      • BAEKJOON\BFS, DFS (6)
      • BAEKJOON\์ด๋ถ„ํƒ์ƒ‰ (1)
      • BAEKJOON\๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ (9)
      • BAEKJOON\๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ (0)
    • โœจ ISEUNGHAN (1)

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๊ธ€

์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
๋ฐ˜์‘ํ˜•
hELLO ยท Designed By ์ •์ƒ์šฐ.
iseunghan
๋ฐฑ์ค€ 15649๋ฒˆ : N๊ณผ M(1) (JAVA) ๋ฌธ์ œ ํ’€์ด
์ƒ๋‹จ์œผ๋กœ

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

๊ฐœ์ธ์ •๋ณด

  • ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ
  • ํฌ๋Ÿผ
  • ๋กœ๊ทธ์ธ

๋‹จ์ถ•ํ‚ค

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

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

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

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

๋ชจ๋“  ์˜์—ญ

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

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