목록programmers (70)
컴공생의 다이어리

[프로그래머스] 예상 대진표 - 파이썬(Python) def solution(n, a, b): answer = 0 while a != b: answer += 1 a, b = (a + 1) // 2, (b + 1) // 2 # +1을 한 뒤 2로 나눈 몫을 저장하는 이유는 # a, b가 홀수이건 짝수이건 1을 더해서 몫으로 나누면 # 다음 라운드의 번호를 구할 수 있음 return answer https://programmers.co.kr/learn/courses/30/lessons/12985 코딩테스트 연습 - 예상 대진표 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번,..

[프로그래머스] 폰켓몬 - 파이썬(Python) def solution(nums): return min(len(nums) // 2, len(set(nums))) https://programmers.co.kr/learn/courses/30/lessons/1845 코딩테스트 연습 - 폰켓몬 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. programmers.co.kr

[프로그래머스] 전력망을 둘로 나누기 - 파이썬(Python) from collections import defaultdict, deque def bfs_and_node_count(del_line, n, wire_dict): # bfs 수행과 연결된 노드수 구하기 count = 1 # 연결된 노드 수 visited = [False] * (n + 1) # 방문여부 체크 visited[del_line[0]] = True # 시작 노드 방문 처리 queue = deque([del_line[0]]) while queue: # bfs 수행 curr = queue.popleft() for i in wire_dict[curr]: # curr 노드와 연결된 노드에 대해서 if visited[i] or i == del_..

[프로그래머스] 피로도 - 파이썬(Python) from itertools import permutations def solution(k, dungeons): answer = 0 len_dungeons = len(dungeons) for permu in permutations(dungeons, len_dungeons): # 순열로 경우를 만들어줌 temp_k = k # k는 그대로 보존하기 위해 temp_k를 k로 초기화 하고 사용 count = 0 # 던전 수 for p in permu: if temp_k >= p[0]: # 최소 필요 피로도가 있는지 확인 temp_k -= p[1] # 소모 피로도 빼주기 count += 1 # 던전 수 업데이트 answer = max(answer, count) # 최..

[프로그래머스] 스킬트리 - 파이썬(Python) def solution(skill, skill_trees): answer = 0 for tree in skill_trees: s = '' for i in tree: if i in skill: # 선행스킬에 포함된다면 s += i if skill[:len(s)] == s: # skill의 앞부터 s의 길이만큼 s와 같다면 answer += 1 # 가능한 스킬트리 return answer https://programmers.co.kr/learn/courses/30/lessons/49993 코딩테스트 연습 - 스킬트리 programmers.co.kr

[프로그래머스] 소수 만들기 - 파이썬(Python) from itertools import combinations def solution(nums): answer = 0 for i in combinations(nums, 3): s = sum(i) chk = True for j in range(2, int(s ** 0.5) + 1): if s % j == 0: chk = False break if chk is True: answer += 1 return answer https://programmers.co.kr/learn/courses/30/lessons/12977 코딩테스트 연습 - 소수 만들기 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 ..

[프로그래머스] 괄호 변환 - 파이썬(Python) from collections import deque def separate_u_v(p): # 문자열 p를 u와 v로 분리 # u : 균형잡힌 괄호 문자열, v : 나머지 open_p, close_p = 0, 0 for i in range(len(p)): if p[i] == '(': open_p += 1 else: close_p += 1 if open_p == close_p: return p[:i + 1], p[i + 1:] # u, v def check_balance(u): # 문자열 u가 올바른 괄호 문자열인지 체크 stack = deque() for i in u: if i == '(': stack.append(i) else: if not stack..

[프로그래머스] 문자열 압축 - 파이썬(Python) def solution(s): answer = len(s) for step in range(1, len(s) // 2 + 1): comp = '' prev = s[0:step] count = 1 for i in range(step, len(s), step): if prev == s[i:i + step]: count += 1 else: comp += str(count) + prev if count >= 2 else prev prev = s[i:i + step] count = 1 comp += str(count) + prev if count >= 2 else prev answer = min(answer, len(comp)) return answer htt..

[프로그래머스] 입국심사 - 파이썬(Python) def solution(n, times): answer = 0 left, right = 1, min(times) * n while left = n: break if people >= n: answer = mid right = mid - 1 elif people < n: left = mid + 1 return answer https://programmers.co.kr/learn/courses/30/lessons/43238 코딩테스트 연습 - 입국심사 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 programmers.co..

[프로그래머스] 영어 끝말잇기 - 파이썬(Python) def solution(n, words): length = len(words) for i in range(1, length): if words[i - 1][-1] != words[i][0]: return [i % n + 1, i // n + 1] elif words[i] in words[:i]: return [i % n + 1, i // n + 1] elif len(words[i]) == 1: return [i % n + 1, i // n + 1] return [0, 0] https://programmers.co.kr/learn/courses/30/lessons/12981 코딩테스트 연습 - 영어 끝말잇기 3 ["tank", "kick", "know..