Tesseractjh
한 걸음씩
Tesseractjh
전체 방문자
오늘
어제
  • 전체 (293)
    • IT (30)
      • JavaScript (7)
      • TypeScript (5)
      • React (5)
      • Next.js (3)
      • MongoDB (2)
      • Webpack (2)
      • HTML & CSS (1)
      • Git (0)
      • AWS (1)
      • 기타 (4)
    • 연습장 (259)
      • 백준(BOJ) 문제풀이 (185)
      • 프로그래머스 문제풀이 (61)
      • LeetCode 문제풀이 (2)
      • HackerRank 문제풀이 (7)
      • 낙서장 (3)
      • 기타 (1)
    • 프로젝트 (3)
      • 지뢰피하기 (1)
      • 키릴-라틴 문자 변환기 (1)
      • Flex & Grid (1)
    • 멋쟁이사자처럼 프론트엔드 스쿨 1기 (1)
      • 일기 & 회고록 (1)

인기 글

티스토리

hELLO · Designed By 정상우.
Tesseractjh

한 걸음씩

연습장/백준(BOJ) 문제풀이

[백준 15651] N과 M (3) with Python

2021. 5. 10. 01:33

문제 링크

www.acmicpc.net/problem/15651

 

15651번: N과 M (3)

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

www.acmicpc.net

풀이

n, m = map(int, input().split())

def nm(n, m, seq=[]):
    if len(seq) == m:
        print(" ".join(seq))
    else:
        for i in range(1, n+1):
            nm(n, m, seq+[str(i)])

nm(n, m)

재귀함수를 통해 1부터 n까지의 수를 차례로 순회하면서 하나씩 seq에 추가하여 그 길이가 m만큼 되었을 때마다 출력하도록 하였다.

 

itertools모듈의 product 메소드를 사용하여 더 쉽게 해결할 수 있다.

itertools.product(*iterables, repeat=1)는 iterable들의 곱집합을 튜플로 반환하며, 만약 하나의 iterable 내에서 곱집합을 얻으려면 몇 번 반복할 것인지 repeat를 지정하면 된다.

import itertools

n, m = map(int, input().split())
lst = map(str, [str(x) for x in range(1, n+1)])
print("\n".join(map(" ".join, itertools.product(lst, repeat=m))))

 

저작자표시 비영리 (새창열림)

'연습장 > 백준(BOJ) 문제풀이' 카테고리의 다른 글

[백준 15652] N과 M (4) with Python  (0) 2021.05.12
[백준 3986] 좋은 단어 with Node.js  (0) 2021.05.10
[백준 9656] 돌 게임 2 with Node.js  (0) 2021.05.07
[백준 10799] 쇠막대기 with Python  (0) 2021.05.07
[백준 2331] 반복수열 with Node.js  (0) 2021.05.06
    '연습장/백준(BOJ) 문제풀이' 카테고리의 다른 글
    • [백준 15652] N과 M (4) with Python
    • [백준 3986] 좋은 단어 with Node.js
    • [백준 9656] 돌 게임 2 with Node.js
    • [백준 10799] 쇠막대기 with Python
    Tesseractjh
    Tesseractjh
    바닐라 자바스크립트를 좋아하는 개발자입니다

    티스토리툴바