반응형
백준 15650번 N과 M (2) 이다.
이전 N과 M (1)과 문제가 비슷하다. 이번에는 오름차순이어야 한다는 조건이 추가되었다.
이번에도 역시 백트래킹 문제이다.
이번에는 한 숫자를 골랐다면 다음자리에는 그보다 작은 숫자가 올 수 없기 때문에
check 배열에서 고른 숫자 이하의 자리는 모두 +1 해주고 빠져나오면 -1을 해 주었다.
물론 고를때에는 1이 아닌것으로가 아닌 0인지로 판단해주었다.
언어는 python을 사용하였다.
def func(cnt):
if cnt == m:
for i in range(m):
print(list1[list2[i]], end = ' ')
print()
for i in range(n):
if check[i] == 0:
for j in range(i+1):
check[j] += 1
list2[cnt] = i
func(cnt+1)
for j in range(i+1):
check[j] -= 1
n, m = input().split()
n = int(n)
m = int(m)
list1 = [1,2,3,4,5,6,7,8]
list2 = [0,0,0,0,0,0,0,0]
check = [0,0,0,0,0,0,0,0]
func(0)
이전과 거의 유사하지만 오름차순에 대한 처리만 해주면 되는 문제였다.
성공!
반응형
'Computer Science > 백준' 카테고리의 다른 글
백준 15652번 N과 M (4) (0) | 2020.03.11 |
---|---|
백준 15651번 N과 M (3) (0) | 2020.03.11 |
백준 15649번 N과 M (1) (0) | 2020.03.11 |
백준 1436번 영화감독 숌 (0) | 2020.02.06 |
백준 1018번 체스판 다시 칠하기 (0) | 2020.02.06 |