[Coding Test]

    [백준] 15664 파이썬(python) : N과 M (10) - (★)

    [백준] 15664 파이썬(python) : N과 M (10) - (★)

    15664번 : N과 M (10) import sys n, m = map(int, sys.stdin.readline().split()) number = list(map(int, sys.stdin.readline().split())) number.sort() res = [] visit = [False]*10001 def backTracking(depth): if depth == m: print(*res) return overlap = 0 for i in range(len(number)): if len(res) != 0 and res[-1] > number[i]: #1 continue if not visit[i] and overlap != number[i]: overlap = number[i] visit[i..

    [백준] 15663 파이썬(python) : N과 M (9) - (★)

    [백준] 15663 파이썬(python) : N과 M (9) - (★)

    15663번 : N과 M (9) import sys n, m = map(int, sys.stdin.readline().split()) number = list(map(int, sys.stdin.readline().split())) number.sort() res = [] visit = [False]*10001 def backTracking(depth): if depth == m: print(*res) return overlap = 0 #1 for i in range(len(number)): #2 if not visit[i] and overlap != number[i]: res.append(number[i]) visit[i] = True overlap = number[i] #3 backTracking(de..

    [백준] 15657 파이썬(python) : N과 M (8)

    [백준] 15657 파이썬(python) : N과 M (8)

    15657번 : N과 M (8) n, m = map(int, input().split()) answer = list(map(int, input().split())) answer.sort() result = [] def dfs(depth): if depth == m: print(*result) return for ans in answer: if len(result) != 0 and result[-1] > ans: #1 continue result.append(ans) dfs(depth+1) result.pop() dfs(0) #1 : 문제의 패턴을 보면 자기보다 작은 수는 오른쪽에 올 수 없다. 그래서 result의 길이가 0이 아닐때 가장 오른쪽 원소보다 새로들어올 숫자가 작으면 continue 해준다...

    [백준] 15656 파이썬(python) : N과 M (7)

    [백준] 15656 파이썬(python) : N과 M (7)

    15656번 : N과 M (7) n, m = map(int, input().split()) answer = list(map(int, input().split())) answer.sort() result = [] def dfs(depth): if depth == m: print(*result) return for ans in answer: result.append(ans) dfs(depth+1) result.pop() dfs(0) 중복을 허용해 주고 자기자신이 들어와도 괜찮은 아무조건이 없는 문제다.

    [백준] 15655 파이썬(python) : N과 M (6)

    [백준] 15655 파이썬(python) : N과 M (6)

    15655번 : N과 M (6) 나의 풀이) n, m = map(int, input().split()) answer = list(map(int, input().split())) result = [] answer.sort() def dfs(): if len(result) == m: print(*result) return for ans in answer: #1 if ans in result: continue if len(result) != 0 and result[-1] >= ans: continue result.append(ans) dfs() result.pop() dfs() #1 : 1~n을 돌려주기 싫어서 만든 나의 풀이 하지만 깔끔하지 못하다는 생각이 든다. 다른 풀이) n, m = map(int, i..

    [백준] 15654 파이썬(python) : N과 M (5)

    [백준] 15654 파이썬(python) : N과 M (5)

    15654번 : N과 M (5) n, m = map(int, input().split()) num = list(map(int, input().split())) num.sort() visit = [False] * n #1 result = [] def dfs(depth): if depth == m: #2 print(*result) for i in range(n): if not visit[i]: result.append(num[i]) visit[i] = True dfs(depth+1) result.pop() visit[i] = False dfs(0) #1 : dfs에 필요한 방문처리 자기자신을 다시 방문하지 않기위해 필요 #2 : m만큼의 깊이가 되면 출력하도록 한다. 1차 수정) n, m = map(int,..