https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 아이디어 순열을 구하는 문제였다. dfs로 모든 경우의 수를 탐색하면서, 백트래킹으로 겹치는 숫자를 만나지 않게 제외해주면 된다! 전체코드 N, M = map(int, input().split()) visited = [0] * (N + 1) def bt(nums, visited): if len(nums) == M: for num in nums: print(num, end=" ") print() ..
https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 아이디어 N이 1이나 2일 경우를 제외한 계단 오르는 방법이 키워드이다. 1이나 2일 경우 아래와 같이 이동한 값이 항상 max 값이다. N > 2일 경우는 두 가지 경우의 수가 있다. 이전 칸에서 2칸 뛰어서 도착하는 경우 이 경우 연속되는 칸을 밟을 일이 없으므로 dp[i-2] + stairs[i]를 하면 구할 수 있다. 이전 칸에서 1칸 뛰어서 도착하는 경우 이 경우 연속되는 칸을 밟을 우려가 있기 때문..
https://www.acmicpc.net/problem/1904 1904번: 01타일 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이 www.acmicpc.net 아이디어 dp 문제이다. N 갯수 1 1 2 2 3 3 4 5 5 8 6 13 . . . N을 1씩 증가시키면서 구하면 아래와 같은 규칙을 찾을 수 있다. 만들 수 있는 길이가 N인 모든 2진 수열의 개수 = N-1인 모든 2진 수열의 개수 + N-2인 모든 2진 수열의 개수 즉 dp[n] = dp[n-1] + dp[n-2] 이다. 전체 코드 N = int(input()) dp = [0] * (N + ..
https://school.programmers.co.kr/learn/courses/30/lessons/42883 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 아이디어 처음에는 그냥 구현을 했는데 테케 8번, 10번에서 자꾸 오류가 났다. def solution(number, k): i = 0 while k > 0: if not stack: stack.append(number[i]) j = i + 1 if number[i] < number[j]: number = number[:i] + number[i+1:] k -= 1 i = 0 continue i +..