Baekjoon/백트래킹

[백준] 15649 N과 M (1) (실버3) / 백트래킹

2023. 4. 12. 23:45

문제요약

나의 코드 및 설명

  • 중복없이 M개를 고른 수열을 ans에 저장하기 위해 main 함수에서 visited 리스트를 생성하고, ans에 해당 수가 저장된다면 visited의 동일 인덱스에 1을 저장한다.
ans = []
def dfs(index): #index자리
    if len(ans) == m:
        print(" ".join(map(str, ans)))
        return
    if index == n:
        return 
    
    for i in range(1, n+1):
        if visited[i] == 0: #ans에 현재의 값이 들어있는지 확인
            visited[i] = 1 #지금 들어가니까 방문처리
            ans.append(i)
            dfs(index+1) #다음 자리를 결정하는 함수 호출
            visited[i] = 0
            ans.pop() #갔다와서는 마지막 자리를 빼줌


n, m = map(int, input().split())
visited = [0] * (n+1) #중복되는 수열이 들어가면 안된다.

dfs(0)

 

다시 풀은 나의 코드 및 설명

  • 생각해보니 어차피 index(선택한 숫자의 개수)가 m이 된다면 리턴해주는 것이므로, 종료 시점에 대하여 n과는 무관하다.
def dfs(index, temp_list):
    if index == m:
        print(" ".join(map(str, temp_list)))
        return
    
    for i in range(1, n+1):
        if visited[i] == 0:
            visited[i] = 1
            temp_list += [i]
            dfs(index+1, temp_list)
            visited[i] = 0
            temp_list.pop()
    
n, m = map(int, input().split())

visited = [0] * (n+1)
dfs(0,[])

피드백

SWEA D3 풀다가 백트래킹, DFS, BFS 문제가 등장하기에 백준 단계별 풀어보기와 동영상 강의를 통해 공부할 계획이다. 아직 미숙하지만 DFS와의 차이점을 알 수 있었고, 반복 훈련을 통해 익숙해져야겠다. 앞으로 백트래킹이나 DFS, BFS 문제가 나오면 트리 등 그림을 그려서 풀이 과정을 찾는 연습을 해야겠다.

'Baekjoon > 백트래킹' 카테고리의 다른 글

[백준] 15655 N과 M (6) (실버3) / 백트래킹  (0) 2023.04.14
[백준] 15654 N과 M (5) (실버3) / 백트래킹  (0) 2023.04.14
[백준] 15652 N과 M (4) (실버3) / 백트래킹  (0) 2023.04.13
[백준] 15650 N과 M (2) (실버3) / 백트래킹  (0) 2023.04.13
[백준] 15651 N과 M (3) (실버3) / 백트래킹  (0) 2023.04.13
'Baekjoon/백트래킹' 카테고리의 다른 글
  • [백준] 15654 N과 M (5) (실버3) / 백트래킹
  • [백준] 15652 N과 M (4) (실버3) / 백트래킹
  • [백준] 15650 N과 M (2) (실버3) / 백트래킹
  • [백준] 15651 N과 M (3) (실버3) / 백트래킹
hellosonic
hellosonic
hellosonic
꾸준함
hellosonic
전체
오늘
어제
  • 분류 전체보기 (285)
    • SSAFY (4)
    • 프로그래머스 데브코스 (26)
    • Diary (1)
    • JavaScript (20)
    • ToyPJ (13)
      • Python-Django (13)
    • CS지식 (11)
      • 자료구조 (5)
      • 개발 상식 (2)
      • 네트워크 (4)
    • Baekjoon (141)
      • IM Level (57)
      • DFS와 BFS (21)
      • 백트래킹 (21)
      • DP (3)
      • 이분탐색 (4)
      • 구현 (14)
    • Programmers (13)
      • Lv1 (4)
      • Lv2 (9)
    • SWEA (SW Expert Academy) (52)
      • D1 (5)
      • D2 (7)
      • D3 (40)
    • 이코테 (4)
    • Grammar (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기
  • 관리자

공지사항

인기 글

태그

  • 파이썬
  • 백준 5212
  • 파이썬 1946
  • 파이썬 11478
  • 프론트엔드 데브코스
  • SWEA/D3
  • 백준
  • JS
  • 백준 2999
  • 파이썬 1436
  • 프로그래머스
  • 프로그래머스 데브코스
  • SWEA D2
  • javascript ux
  • 백준 18870
  • 자바스크립트 기본기
  • 그리디
  • 파이썬 1269
  • SWEA D3
  • 국비지원교육
  • 코딩부트캠프
  • SWEA
  • 구현
  • 백준 14891
  • 이코테
  • SWEA 파이썬
  • 백준 1157
  • 파이썬 2529
  • 리액트 todolist
  • 자바스크립트

최근 댓글

최근 글

hELLO · Designed By 정상우.
hellosonic
[백준] 15649 N과 M (1) (실버3) / 백트래킹
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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