목록파이썬 (170)
컴공생의 다이어리
백준 12761번 : 돌다리 (문제 바로가기) 내 코드 from collections import deque # a, b : 스카이 콩콩의 힘 # n : 동규의 현재 위치 # m : 주미의 현재 위치 a, b, n, m = map(int, input().split()) dp = dict() # 각 돌의 최소 이동 횟수 dp[n] = 0 queue = deque([n]) # n에서 시작 while queue: # bfs 수행 curr = queue.popleft() for i in {1, -1, a, -a, b, -b}: # +1칸, -1칸, +A칸, -A칸, +B칸, -B칸 이동 val = curr + i if 0
[프로그래머스] 스킬트리 - 파이썬(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..
[프로그래머스] 비밀지도 - 파이썬(Python) def solution(n, arr1, arr2): answer = [] for i, j in zip(arr1, arr2): temp = str(bin(i | j)[2:]).rjust(n, '0') temp = temp.replace('1', '#') temp = temp.replace('0', ' ') answer.append(temp) return answer https://programmers.co.kr/learn/courses/30/lessons/17681 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는..
[프로그래머스] N으로 표현 - 파이썬(Python) def solution(N, number): if N == number: return 1 dp = [{N}] for i in range(2, 9): # 숫자 n을 i번 사용할 때 nums = set([int(str(N) * i)]) # 기본으로 숫자 n을 i번 이어서 생성 for j in range(0, int(i / 2)): for x in dp[j]: # n을 j+1번 사용했을 때의 경우와 for y in dp[i - j - 2]: # n을 i-j-1번 사용했을 때의 경우 nums.add(x + y) nums.add(x - y) nums.add(y - x) nums.add(x * y) if y != 0: nums.add(x // y) if x !=..
[프로그래머스] 순위 - 파이썬(Python) from collections import defaultdict def solution(n, results): answer = 0 win, lose = defaultdict(set), defaultdict(set) for w, l in results: win[l].add(w) # 나를 이긴 사람 lose[w].add(l) # 나에게 진 사람 for i in range(1, n + 1): for w in win[i]: lose[w].update(lose[i]) for l in lose[i]: win[l].update(win[i]) for i in range(1, n + 1): if len(win[i]) + len(lose[i]) == n - 1: answer ..