Programmers / 2단계 / 전력망을 둘로 나누기 / python
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/86971 코드 def solution(n, wires): ans = n for sub in (wires[i+1:] + wires[:i] for i in range(len(wires))): s = set(sub[0]) [s.update(v) for _ in range(len(sub)) for v in sub if set(v) & s] ans = min(ans, abs(2 * len(s) - n)) return ans from collections import deque def bfs(graph, start, visited): # 큐(Queue) 구현을 위해 deque 라이브러리 사용 queue = de..
Programmers / 2단계 / 메뉴 리뉴얼 / python
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/72411 모범 답안 import collections from itertools import combinations def solution(orders, course): result = [] for course_size in course: order_combinations = [] for order in orders: order_combinations += combinations(sorted(order), course_size) most_ordered = collections.Counter(order_combinations).most_common() result += [ k for k, v in mo..
Programmers / 2단계 / 124 나라의 숫자 / python
·
코딩테스트/programmers (python)
코딩테스트 연습 - 124 나라의 숫자 | 프로그래머스 스쿨 (programmers.co.kr) 모범 답안 def solution(n): result = [] while n: t = n % 3 if not t: t = 4 n -= 1 result.append(str(t)) n //= 3 return ''.join(result[::-1]) def solution(n): num = ['1', '2', '4'] result='' while n > 0: n -= 1 result = num[n % 3] + result n //= 3 return result 나오는 숫자가 3개 밖에 없으므로 3진수를 이용하여 변환하면 구현할 수 있다. 일반 3진수는 0이 있어서 일반적인 숫자 체계처럼 가장 앞의 숫자로 0이 올 수..
Programmers / 2단계 / 연속된 부분 수열의 합 / python
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/178870 나의 풀이 def solution(sequence, k): l = r = 0 answer = [0, len(sequence)] sum = sequence[0] while True: if sum < k: r += 1 if r == len(sequence): break sum += sequence[r] else: if sum == k: if r-l < answer[1]-answer[0]: answer = [l, r] sum -= sequence[l] l += 1 return answer
Programmers / 2단계 / 큰 수 만들기 / python / 탐욕법(Greedy)
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/68645 나의 풀이 def solution(number, k): stack = [] for num in number: while k>0 and stack and stack[-1] < num: stack.pop() k -= 1 stack.append(num) return "".join(stack[:len(stack)-k]) 제거하는 수를 제외한 나머지 수의 위치를 변경하지 않고 만들 수 있는 최댓값을 구하는 문제였다. Stack을 사용해 number 값들을 넣고 while문으로 Stack의 맨 위의 원소보다 number 값이 크면 Stack 원소를 pop함과 동시에 k값을 1 줄여가며 k가 0일 때까지..
Programmers / 2단계 / 삼각 달팽이 / python
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/68645 나의 풀이 def solution(n): triangle = [ [0] * n for _ in range(n) ] answer = [] x, y = -1, 0 num = 1 for i in range(n): for j in range(i, n): if i % 3 == 0: x += 1 elif i % 3 == 1: y += 1 elif i % 3 == 2: x -= 1 y -= 1 triangle[x][y] = num num += 1 for i in range(n): for j in range(i+1): answer.append(triangle[i][j]) return answer trian..
Programmers / 3단계 / 두 큐 합 같게 만들기 / python / 2022 KAKAO TECH INTERNSHIP
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/118667 나의 풀이 from collections import deque def solution(queue1, queue2): q1 = deque(queue1) q2 = deque(queue2) s1 = sum(q1) s2 = sum(q2) sumnum = s1 + s2 if sumnum % 2 == 1: return -1 cnt = 0 while True: if s1 > s2 and len(q1) != 0: num = q1.popleft() q2.append(num) s1 -= num s2 += num cnt += 1 elif s2 > s1 and len(q2) != 0: num = q2.popl..
Programmers / 3단계 / 단속카메라 / python / 탐욕법(Greedy)
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/42884 나의 풀이 def solution(routes): routes.sort(key = lambda x: x[1]) camera = -30001 cnt = 0 for route in routes: if route[0] > camera: cnt += 1 camera = route[1] return cnt 1. 최소한의 카메라를 설치하기 위해 진출 지점을 기준으로 정렬한다.2. 제한사항을 고려해 camera를 -30001으로 놓는다.3. routes를 돌며 차량의 진입 지점이 카메라의 위치보다 크면 카메라의 수(cnt)를 증가시킨다.4. camera를 차량의 진출 지점으로 놓고 반복한다