[백준/Python] 15666번: N과 M (12)

2022. 7. 10. 06:31· Koala - 7기/코딩테스트 준비 스터디

15666번: N과 M (12) (acmicpc.net)

 

15666번: N과 M (12)

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

www.acmicpc.net


문제 해석

N개의 자연수 중 M개를 고른 수열을 모두 구하는 문제이다.

조건으로는 같은 수를 여러 번 골라도 되고 비내림차순이어야 한다. 그리고 순열은 사전 순으로 출력해야 한다.


코드


문제 풀이

main부분을 보면 s에 N개의 수를 저장해 주었고 s를 오름차순으로 정렬해주었다. 이는 사전 순으로 출력해주기 위함이다.

그리고 arr와 result를 각각 list와 dictionary로 선언해주었는데 arr에는 순열이 저장되고 result에는 조건에 맞는 순열들을 모아서 저장해 주었다. 여기서 result는 dictionary로 선언한 이유는 hash table을 이용하기 때문에 list보다 탐색 시간이 훨씬 빠르기 때문이다.

go function를 보면 처음 if문에서는 재귀의 종료조건을 정의해주었는데 처음 if문으로 arr가 M 길이에 도달했을 때를 정의해주었다. 2번째 if문에서는 중복되는 순열을 골라내기 위한 것으로 먼저 arr는 list이기 때문에 탐색할때 불편하므로 a에 string문으로 변환하여 저장해주었고 result에 같은 값이 없을 경우, 이 값을 출력하였다.

go function의 for문에서는 백트래킹을 수행하는데 맨 처음 수행할때는 아무 조건없이 곧바로 수행하게 하였고 2번째부터는 비내림차순으로 순열을 만들어야 하므로 if문에 조건을 달아놨다.

 

여담으로 arr를 a로 변환하는 과정에서 굳이 "".join()이 아닌 " ".join()인 공백을 추가한 이유는
4 3
1 11 111 1111
이라는 반례가 있기 때문이다.

저작자표시 (새창열림)

'Koala - 7기 > 코딩테스트 준비 스터디' 카테고리의 다른 글

[백준/c++] 4963번 섬의 개수  (0) 2022.07.10
[백준/Python] 1895번 필터  (0) 2022.07.10
[백준/Python] 1107번 리모컨  (0) 2022.07.09
[백준/Python] 1969번 DNA  (0) 2022.07.08
[BOJ / Python] 6603 - 로또  (0) 2022.07.08
'Koala - 7기/코딩테스트 준비 스터디' 카테고리의 다른 글
  • [백준/c++] 4963번 섬의 개수
  • [백준/Python] 1895번 필터
  • [백준/Python] 1107번 리모컨
  • [백준/Python] 1969번 DNA
KauKoala
KauKoala
항공대 알고리즘 동아리 Koala 🥰
KauKoala
Koala
KauKoala
전체
오늘
어제
  • 분류 전체보기 (1884)
    • 공지 게시판 (10)
    • 정보 게시판 (8)
    • Codeforce (15)
    • acm-icpc (6)
    • Koala - 1기 (16)
    • Koala - 2기 (111)
      • Programming Contest (1)
      • A반 (20)
      • B반 (39)
      • C반 (22)
      • 기초 강의 (18)
    • Koala - 3기 (10)
      • 기초 스터디 (7)
    • Koala - 4기 (67)
    • Koala - 5기 (144)
      • 기초 알고리즘 스터디 (75)
      • 코딩테스트 준비 스터디 (68)
    • Koala - 6기 (102)
      • 기초 알고리즘 스터디 (75)
      • 코딩테스트 준비 스터디 (25)
      • 모의 테스트 스터디 (1)
    • Koala - 7기 (167)
      • 기초 알고리즘 스터디 (97)
      • 코딩테스트 준비 스터디 (68)
      • 모의 테스트 스터디 (1)
    • Koala - 8기 (44)
      • 기초 알고리즘 스터디 (32)
      • 코딩테스트 준비 스터디 (10)
      • 코드포스 버츄얼 스터디 (0)
      • 프로그래머스 LV2 스터디 (0)
    • Koala - 9기 (205)
      • 기초 알고리즘 스터디 (138)
      • 코딩테스트 준비 스터디 (64)
      • 모의테스트 준비 스터디 (1)
    • Koala - 10기 (117)
      • 기초 알고리즘 스터디 (30)
      • 코딩테스트 준비 스터디 (86)
      • 모의테스트 준비 스터디 (1)
    • Koala - 11기 (151)
      • 기초 알고리즘 스터디 (46)
      • 코딩테스트 준비 스터디 (104)
      • 모의테스트 준비 스터디 (1)
    • Koala - 12기 (86)
      • 기초 알고리즘 스터디 (31)
      • 코딩테스트 준비 스터디 (55)
    • Koala - 13기 (119)
      • 기초 알고리즘 스터디 (52)
      • 코딩테스트 준비 스터디 (67)
    • Koala - 14기 (116)
      • 기초 알고리즘 스터디 (39)
      • 코딩테스트 준비 스터디 (77)
    • Koala - 15기 (138)
      • 기초 알고리즘 스터디 (73)
      • 코딩테스트 준비 스터디 (65)
    • Koala - 16기 (47)
      • 코딩테스트 기초 스터디 (16)
      • 코딩테스트 심화 스터디 (31)
    • Koala - 17기 (62)
      • 코딩테스트 기초 스터디 (15)
      • 코딩테스트 심화 스터디 (47)
    • Koala - 18기 (31)
      • 코딩테스트 기초 스터디 (11)
      • 코딩테스트 심화 스터디 (20)
    • Koala - 19기 (38)
      • 코딩테스트 기초 스터디 (7)
      • 코딩테스트 심화 스터디 (31)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 🐨항공대 알고리즘 학회 Koala 3기 모집
  • 🐨항공대 알고리즘 학회 Koala 2기 모집
  • 소모임 소개

인기 글

태그

  • 백트래킹
  • dfs
  • 파이썬
  • C++
  • BFS
  • dp
  • BOJ
  • 백준

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.3.0
KauKoala
[백준/Python] 15666번: N과 M (12)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.