목록분류 전체보기 (315)
rueki
첫번째 칸에는 1로만 뛸 수 있는 경우 - 1 두번째 칸에는 2로만 뛸 수 있는 경우와 1로만 뛸 수 있는 경우 - 2 세번째 부터는 1, 2 이용해서 뛸 수 있는 경우 - 3 점화식 세워서 푸는 문제였다. def solution(n): if n

여기서 문제 접근은 양수 음수 더하는 모든 경우의 수를 고려해야 하며 target값과 같아지는 경우를 세야한다는 것이다. DFS로 양수 루트, 음수 루트로 나누어서 시행하면 풀 수 있다. cnt = 0 def dfs(L, S, numbers, target): global cnt #숫자 최대 길이 max_len = len(numbers) #만약 level이 숫자 길이만큼 도달하면 #경우 하나 추가(target 값과 비교) if L == max_len: if S == target: cnt += 1 else: dfs(L+1, S + numbers[L], numbers, target) dfs(L+1, S - numbers[L], numbers, target) return cnt def solution(numbe..
https://www.acmicpc.net/problem/2023 2023번: 신기한 소수 수빈이가 세상에서 가장 좋아하는 것은 소수이고, 취미는 소수를 가지고 노는 것이다. 요즘 수빈이가 가장 관심있어 하는 소수는 7331이다. 7331은 소수인데, 신기하게도 733도 소수이고, 73도 소수 www.acmicpc.net 자리 수를 늘려가며 계속해서 소수가 맞는지 확인하는 것이 초점인 문제이다. 첫 자리의 경수 4,6,8,9는 이미 소수가 아니기 때문에 제외하고 2,3,5,7로 시작을 한다. 처음 예시 2 - 1 (소수판별) -> 소수가 맞다면 자리수 확장 후 다시 소수 판별... -> N 자리가 될 때까지 (21은 소수가 아니기에 다음은 23을 판별) 231로 확장 되고 231은 소수가 아니기에 다음은..
괄호 여닫으며 쌍 찾은 문제랑 동일한 구조였는데 문자열에 너무 집중한 나머지 투포인터로 풀려다가 시간초과가 나버렸다. def solution(s): stack = [] for w in s: if stack: if stack[-1] == w: stack.pop() else: stack.append(w) #스택에 아무것도 없으면 else: stack.append(w) if stack: answer = 0 else: answer = 1 return answer