• 목록 (128)
    • Android (62)
    • Back-End (2)
    • Java (3)
    • Kotlin (16)
    • CS (7)
    • 개발 서적 (12)
    • 문제 풀이 (26)

최근 글

티스토리

전체 방문자
오늘
어제
hELLO · Designed By 정상우.
MJ_94

한 우물만 파는 기술 블로그

[백준/Kotlin/15651] N과 M(3)
문제 풀이

[백준/Kotlin/15651] N과 M(3)

2022. 6. 14. 10:09

문제

 

15651번: N과 M (3)

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

www.acmicpc.net

자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.

  • 1부터 N까지 자연수 중에서 M개를 고른 수열
  • 같은 수를 여러 번 골라도 된다.

입력

첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 7)

출력

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

수열은 사전 순으로 증가하는 순서로 출력해야 한다.

예제 입력 1

3 1

예제 출력 1

1
2
3

예제 입력 2

4 2

예제 출력 2

1 1
1 2
1 3
1 4
2 1
2 2
2 3
2 4
3 1
3 2
3 3
3 4
4 1
4 2
4 3
4 4

풀이

import java.io.BufferedReader
import java.io.InputStreamReader


val sb = StringBuffer()

fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
    val (N, M) = readLine().split(" ").map { it.toInt() }
    dfs(0, N, M, IntArray(M))
    println(sb)
}


private fun dfs(depth: Int, limit: Int, maxDepth: Int, arr: IntArray) {
    if (depth == maxDepth) {
        repeat(maxDepth) {
            sb.append(arr[it]).append(" ")
        }
        sb.append('\n')
        return
    }

    for (i in 1..limit) {
        arr[depth] = i
        dfs(depth + 1, limit, maxDepth, arr)
    }
}


저작자표시 비영리 변경금지 (새창열림)

'문제 풀이' 카테고리의 다른 글

[백준/Kotlin/2480] 주사위 세개  (0) 2022.06.22
[백준/Kotlin/2525] 오븐 시계  (0) 2022.06.14
[백준/Kotlin/10866] 덱  (0) 2022.06.10
[백준/Kotlin/11659] 구간 합 구하기 4  (0) 2022.06.08
[백준/Kotlin/18870] 좌표 압축  (0) 2022.06.07
    '문제 풀이' 카테고리의 다른 글
    • [백준/Kotlin/2480] 주사위 세개
    • [백준/Kotlin/2525] 오븐 시계
    • [백준/Kotlin/10866] 덱
    • [백준/Kotlin/11659] 구간 합 구하기 4
    MJ_94
    MJ_94
    안드로이드, 개발 관련 기술 블로그

    티스토리툴바