목록코딩테스트 (9)
JUstory

1. 문제 설명 & 제한 사항 2. 나의 풀이def solution(number, k): answer = [] for num in number: while k > 0 and answer and answer[-1] 3. 나의 아이디어 이 문제의 경우 무작정 큰 수들을 뽑겠다는게 아니고 앞에서부터 제거해 나가는 과정인거임숫자가 커지는 순간, 즉 지금 선택한 숫자보다 더 큰 숫자가 존재하면 해당 숫자로 교체해 고점의 흐름을 유지하도록num으로 하나씩 비교 대상을 잡아주고, answer의 마지막 숫자와 비교해주는 것만일 기준인 answer[-1]이 비교 대상 num보다 작다면, num을 채택하는 것 그렇지 않다면, 그대로 answer[-1] 유지k가 0이 되지 않고 for문을 끝나..

1. 문제 설명 & 제한 사항 2. 나의 풀이import sysinput = sys.stdin.readlinesuser_input = input()n = int(user_input[0])arr = [0] + list(map(int, user_input[1].split())) # i개가 들어있는 카드팩 가격dp = [0] *(n+1) # 카드 i개 구매하는 최대 비용 저장for i in range(1, n+1): for j in range(1, i+1): dp[i] = max(dp[i], dp[i-j]+arr[j]) print(dp[n]) 3. 나의 아이디어카드 1개 구매할때 최대 비용 dp[1] i = 1 / j = 1 dp[1] = max(dp[1], dp[0]+arr[1])..

1. 문제 설명 & 제한 사항 2. 나의 풀이from collections import dequedef solution(begin, target, words): if not target in words: return 0 queue = deque([(begin,0)]) ls = [[w for w in word] for word in words] visited = [False for _ in range(len(words))] answer = 0 while queue: current, answer = queue.popleft() if current == target: return answer ..

1. 문제 설명 & 제한 사항 2. 나의 풀이answer = 0def dfs(numbers, target, current, idx): global answer if idx == len(numbers): if current == target: answer += 1 return dfs(numbers, target, current+numbers[idx], idx+1) dfs(numbers, target, current-numbers[idx], idx+1)def solution(numbers, target): dfs(numbers, target, 0, 0) return answer 3. 나의 아이디어 ..

1. 문제 설명 & 제한 사항 2. 나의 풀이from collections import dequedef solution(priorities, location): answer = [] queue = deque((i,v) for i,v in enumerate(priorities)) while queue: process = queue.popleft() if queue and any(process[1] 3. 나의 아이디어queue는 priorities의 원소들에 대해 index와 value를 튜플 형태로 갖는 deque정답은 queue가 아닌 다른 리스트인 answer로 받기로 함queue에서 모든 원소가 뽑혀 빌 때까지 while문 작동deque의 매서드 pople..

1. 문제 설명 & 제한 사항 2-1. 나의 풀이 (정확성 통과 / 효율성 통과)def solution(s): stack = [] for i in s: if stack and i == stack[-1]: stack.pop() else: stack.append(i) return 0 if stack else 1 3-1. 나의 아이디어스택 으로 문제 풀기 (쌓으면서 맨마지막꺼 지우기 때문)주어진 문자열 s의 문자 하나씩 i로 받아 for문을 돌면서, stack이 비어있을 때에는 조건 없이 append반면, stack이 비어있지 않으면서 i가 쌓여있는 stack의 마지막 원소와 같다면, 즉 같은 문자가 반복될 것으로 보인다면, i..