본문 바로가기

WEB/Algorithm

백준 15651

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

 

15651번: N과 M (3)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해

www.acmicpc.net

 

<문제 요약>

주어진 1~N에서 3개로 이뤄진 수열을 출력하는 문제

(단 사전순으로, 같은 숫자 반복 가능) 

 

 

<문제 풀이>

package baekjoon;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.nio.Buffer;
import java.util.StringTokenizer;

public class P15651 {
    public static void main(String[] args) throws IOException {

        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st=new StringTokenizer(br.readLine());

        N=Integer.parseInt(st.nextToken());
        M=Integer.parseInt(st.nextToken());
        arr=new int[M];
        dfs(0);
        System.out.println(sb);

    }

    static int N;
    static int M;
    static int[] arr;
    static StringBuilder sb=new StringBuilder();

    static void dfs(int depth){
        if(depth==M){
            for(int val:arr) sb.append(val).append(" ");
            sb.append("\n");
            return;
        }
        for(int i=0;i<N;i++){
            arr[depth]=i+1;
            dfs(depth+1);
        }
    }
}

 

백트래킹중 dfs문제이다!

학부 때 알고리즘 강의 시간에 공부한 dfs .. 

이렇게 문제로 풀어보니 색 달랐다 

백준 백트레킹 카테고리에 N과 M 문제 시리즈가 있는데 이게 젤 쉬운 것 같다

 

알고리즘 단골 유형이기도 하니 열심히 익혀보쟈 !

 

'WEB > Algorithm' 카테고리의 다른 글

백준 1620  (1) 2023.11.25
백준 15652  (1) 2023.11.24
백준 24060  (1) 2023.11.22
백준 25501  (0) 2023.11.22
백준 27433  (1) 2023.11.22