목록분류 전체보기 (24)
ol-rlo-zl

문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 1. skill(선행스킬순서)에 있는 원소들에 대하여 skill_tree(스킬트리)에서의 index를, 리스트에 담는다. 2. 1번에서 만약, skill에 있는 원소가 skill_tree에 없다면, 임의로 스킬트리의 길이를 리스트에 담는다. (index의 범위가 0부터 스킬트리의 길이-1 까지 이기 때문에 이들 보다 큰 수를 넣기 위함) 3. 리스트가 오름차순 정렬 되어있다면, 가능한 스킬트리 라고 판단한다. 4. 모든 skill_tree에 대하여 1,2,3번 과정을 반복한다. def solu..

문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 시행착오 (list 이용) 66.7점 - 정확성 테스트 통과, 효율성 테스트 실패(시간초과) def solution(prices): result = [] while prices: now = prices.pop(0) # i = 0 for p in prices: i += 1 if now > p: break result.append(i) return result 정답 (deque 이용) list를 이용할 때와 같은 풀이방식이지만, deque를 이용하면 더 효율적이다. from collections import..

문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 def solution(record): result = [] user = {} ment = {'Enter':'님이 들어왔습니다.', 'Leave':'님이 나갔습니다.'} for r in record: r = r.split() if r[0] in ('Enter','Change'): user[r[1]] = r[2] for r in record: r = r.split() if r[0] in ment: result.append(user[r[1]] + ment[r[0]]) return result 결과

문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 시행착오 (list 이용) 83.9점 - 정확성 테스트 통과, 효율성 테스트 실패(시간초과) def solution(scoville, K): cnt = 0 while min(scoville) < K: if len(scoville) == 1: return -1 scoville.sort() scoville.append(scoville[0]+scoville[1]*2) scoville = scoville[2:] cnt += 1 return cnt 정답 (heapq 이용) list를 이용할 때와 같은 풀이방식이지..

문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 def solution(fees, records): lst = [] dic = {} result = [] def time(in_time, out_time): in_h, in_m = map(int,in_time.split(':')) out_h, out_m = map(int,out_time.split(':')) if in_m > out_m: out_h -= 1 out_m += 60 return (out_m-in_m) + 60*(out_h-in_h) for r in records: if r[-2:] ==..

문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 def solution(n, t, m, p): res = '0' i = 1 while len(res) 0: if _i % n > 9: temp += chr(55 + _i % n) else: temp += str(_i % n) _i //= n res += temp[::-1] i += 1 return res[:t*m][p-1::m] 결과

문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 def solution(n, k): result = 0 # n의 k진수 num[::-1] 구하기 num = '' while n > 0: num += str(n % k) n //= k for p in num[::-1].split('0'): if p.isdigit() and int(p) > 1 : # 빈 문자열과 1은 제외 # p가 소수인지 판별 for i in range(2,int(int(p)**(1/2))+1): if int(p) % i == 0: break else: result += 1 retu..

문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 1. Hash 이용 def solution(phoneBook): hash_map = {} for number in phoneBook: hash_map[number] = 1 for number in phoneBook: temp = '' for n in number: temp += n if temp in hash_map and temp != number: return False return True 2. zip함수와 startswith함수 이용 def solution(phoneBook): phoneBo..

문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 1. 재귀함수 이용 def recursive(numbers, target, summ): if numbers == []: if summ == target: return 1 else: return 0 return recursive(numbers[1:], target, summ + numbers[0]) + recursive(numbers[1:], target, summ - numbers[0]) def solution(numbers, target): return recursive(numbers, targe..
1. DFS ( Depth-First Search ) 깊이 우선 탐색: 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘 스택 자료구조 ( 혹은 재귀 함수 ) 이용 동작과정 탐색 시작 노드를 스택에 삽입하고 방문처리한다. (방문기준ex: 번호가 낮은 인접 노드부터) 스택의 최상단 노드에 방문하지 않은 인접한 노드가 하나라도 있으면, 그 노드를 스택에 넣고 방문처리한다. 방문하지 않은 인접 노드가 없으면, 스택에서 최상단 노드를 꺼낸다. 더이상 2번의 과정을 수행할 수 없을 때까지 반복한다. 전체 노드의 탐색 순서 = 스택에 들어간 순서 # DFS 메서드 정의 def dfs(graph, v, visited): # 현재 노드를 방문 처리 visited[v] = True print(v, end=' ') # ..