목록파이썬 (170)
컴공생의 다이어리
[프로그래머스] 개인정보 수집 유효기간 - 파이썬(Python) def solution(today, terms, privacies): answer = [] terms_dic = {t[0]: int(t[2:]) * 28 for t in terms} # 약관 코드를 key값으로, 유효기간을 value값으로 하는 dict today = list(map(int, today.split('.'))) today = today[0] * 12 * 28 + today[1] * 28 + today[2] # 오늘 날짜를 일 단위로 변환 for idx in range(len(privacies)): day, code = privacies[idx].split(' ') # 개인정보 수집일과 약관 코드를 분리 day = list(ma..
백준 16928번 : 뱀과 사다리 게임 (문제 바로가기) 내 코드 import sys from collections import deque input = sys.stdin.readline N, M = map(int, input().split()) # N: 사다리의 개수, M: 뱀의 개수 board = [0] * 101 # 사다리와 뱀의 위치를 저장할 리스트 for _ in range(N + M): x, y = map(int, input().split()) board[x] = y # 사다리와 뱀의 위치를 저장 visited = [0] * 101 # 방문 여부를 저장할 리스트 queue = deque([1]) # 시작점 while queue: x = queue.popleft() if x == 100: # 도..
백준 16954번 : 움직이는 미로 탈출 (문제 바로가기) 내 코드 import sys from collections import deque input = sys.stdin.readline wall_pos = set() # 벽 위치 for i in range(8): temp = input().rstrip() for j in range(8): if temp[j] == '#': wall_pos.add((i, j)) queue = deque([(7, 0)]) # 캐릭터 시작 위치 넣기 result = 0 direction = [(i, j) for i in range(-1, 2) for j in range(-1, 2)] # 이동할 수 있는 모든 방향 while queue and wall_pos: temp = s..
백준 17779번 : 게리맨더링 2 (문제 바로가기) 내 코드 import sys input = sys.stdin.readline def simulation(x, y, d1, d2): section = [0] * 5 # 구역별 인구 수 temp_c = y for r in range(x + d1): # 1구역 인구 합 구하기 if r >= x: temp_c -= 1 section[0] += sum(data[r][0:temp_c + 1]) temp_c = y - d1 - 1 for r in range(x + d1, n): # 3구역 인구 합 구하기 section[2] += sum(data[r][0:temp_c + 1]) if r < x + d1 + d2: temp_c += 1 temp_c = y + 1 fo..
백준 2018번 : 수들의 합 5 (문제 바로가기) 내 코드 n = int(input()) start, end = 1, 1 cnt, total = 0, 1 while end != n: if total n: # 합이 n보다 크면 앞에 수 빼기 total -= start start += 1 else: # 합이 n과 같으면 cnt += 1 end += 1 total += end print(cnt + 1) # 자기 자신도 포함
[프로그래머스] 두 큐 합 같게 만들기 - 파이썬(Python) from collections import deque def solution(queue1, queue2): queue1, queue2 = deque(queue1), deque(queue2) q1_sum, q2_sum = sum(queue1), sum(queue2) max_cnt, cnt = len(queue1) * 3, 0 while (queue1 and queue2) and max_cnt != cnt: if q1_sum == q2_sum: # 두 큐 합이 같으면 종료 return cnt elif q1_sum > q2_sum: # queue1의 합이 더 크면 queue1에서 빼기 temp = queue1.popleft() queue2.app..
백준 6497번 : 전력난 (문제 바로가기) 내 코드 import sys input = sys.stdin.readline def find_parent(parent, x): if parent[x] != x: parent[x] = find_parent(parent, parent[x]) return parent[x] def union(parent, a, b): a = find_parent(parent, a) b = find_parent(parent, b) if a < b: parent[b] = a else: parent[a] = b while True: m, n = map(int, input().split()) # m: 집의 수, n: 길의 수 if m == 0 and n == 0: break parent =..
백준 1972번 : 놀라운 문자열 (문제 바로가기) 내 코드 import sys input = sys.stdin.readline while (text := input().rstrip()) != "*": check, length = False, len(text) for i in range(length-1): pairs = set() # D-쌍 for j in range(length-i-1): temp = text[j] + text[j+i+1] if temp in pairs: # 유일하지 않은 경우 print(f"{text} is NOT surprising.") check = True break else: pairs.add(temp) if check: break else: # 유일한 경우 print(f"{t..
백준 1043번 : 거짓말 (문제 바로가기) 내 코드 import sys input = sys.stdin.readline n, m = map(int, input().split()) # n : 사람의 수, m : 파티의 수 know_truth = set(map(int, input().split()[1:])) # 이야기의 진실을 아는 사람의 번호 party = [set(map(int, input().split()[1:])) for _ in range(m)] # 각 파티에 오는 사람의 번호 for _ in range(m): for p in party: # 각 파티에 대해 if p & know_truth: # 진실 아는 사람 있다면 know_truth |= p # 진실 아는 사람에 현재 파티에 있는 사람 추가 ..
백준 4386번 : 별자리 만들기 (문제 바로가기) 내 코드 import sys input = sys.stdin.readline def find_parent(parent, x): if parent[x] != x: parent[x] = find_parent(parent, parent[x]) return parent[x] def union(parent, a, b): a = find_parent(parent, a) b = find_parent(parent, b) if a < b: parent[b] = a else: parent[a] = b n = int(input()) # 별의 개수 stars = [tuple(map(float, input().split())) for _ in range(n)] # 별의 좌표 ..