Algorithm 13

[백준 / 파이썬] 1074번: Z

1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 www.acmicpc.net 정답 코드 import sys input = sys.stdin.readline def Z(n: int, r: int, c: int): """_summary_ Args: n (int): 2^n r (int): row c (int): col Returns: _type_: r행 c열을 몇 번째로 방문 """ # 종료 조건 if n == 0: return 0 half = 2 ** (n-1) subarray = (r >= half) * 2 + (c >= half..

Algorithm 2023.07.31

[백준 / 파이썬] 9663번: N-Queen

9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 정답 코드 import sys input = sys.stdin.readline def dfs(row, post): global answer # 종료 조건 if row == n: answer += 1 return # 열 탐색 for col in range(n): # 행, 열 확인 if not d1[row + col] and not d2[row + n - 1 - col] and not visited[col]: visited[col] = True d1[row + col] = True..

Algorithm 2023.07.31

[프로그래머스 / 파이썬] 두 큐 합 같게 만들기

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 코드 def solution(queue1, queue2): queue3 = queue1 + queue2 target = sum(queue3) // 2 if sum(queue3) % 2 != 0: return -1 queue = queue1 + queue2 + queue1 max_count = len(queue) answer, left, right, sum_value = 0, 0, len(queue1), sum(queue1) while answer target: sum_value -= queue[left]..

Algorithm 2023.07.31

[프로그래머스 / 파이썬] 신고 결과 받기

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 코드 def solution(id_list, report, k): answer = [] # id별 mail 받을 횟수 id_dict = {} for i in id_list: id_dict.setdefault(i, 0) # 신고 받은 횟수 report_count_dict = id_dict.copy() # 신고자, 신고받은 사람 report_person_dict = {} # 중복 신고 삭제 report = list(set(report)) for i in report: reporter, reported = i..

Algorithm 2023.07.29

[프로그래머스 / 파이썬] 이모티콘 할인행사

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 코드 data = [10, 20, 30, 40] discount = [] def dfs(temp, depth): if depth == len(temp): discount.append(temp) return for d in data: temp[depth] += d dfs(temp, depth + 1) temp[depth] -= d def solution(users, emoticons): max_users = 0 max_price = 0 dfs([0] * len(emoticons), 0) for d in r..

Algorithm 2023.07.28

[프로그래머스 / 파이썬] 양과 늑대

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 코드 def solution(info, edges): def dfs(sheep, wolf): if sheep > wolf: global answer answer = max(answer, sheep) else: return for parent, child in edges: if visited[parent] and not visited[child]: visited[child] = True if info[child] == 0: dfs(sheep+1, wolf) else: dfs(sheep, wolf+1) vi..

Algorithm 2023.07.14

[프로그래머스 / 파이썬] 택배 배달과 수거하기

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 코드 def solution(cap, n, deliveries, pickups): answer = 0 delivery = 0 pickup = 0 for i in range(n-1, -1, -1): if deliveries[i] != 0 or pickups[i] != 0: while delivery < deliveries[i] or pickup < pickups[i]: delivery += cap pickup += cap answer += (i + 1) * 2 delivery -= deliveries[i]..

Algorithm 2023.07.14

[프로그래머스 / 파이썬] 미로 탈출 명령어

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 코드 def solution(n, m, x, y, r, c, k): answer = '' dist = abs(x - r) + abs(y - c) k -= dist if k r: direction['u'] += x - r else: direction['d'] += r - x if y > c: direction['l'] += y - c else: ..

Algorithm 2023.07.13

[프로그래머스 / 파이썬] [1차] 추석 트래픽

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 코드 from datetime import datetime, timedelta def solution(lines): timeLogs = [] for line in lines: date, time, duration = line.split(" ") endDate = datetime.strptime(date + "T" + time, "%Y-%m-%dT%H:%M:%S.%f") durationMs = float(duration[:-1]) * 1000 startDate = endDate - timedelta(mil..

Algorithm 2023.07.13

[백준 / 파이썬] 15686번: 치킨 배달

15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 정답 코드 import sys input = sys.stdin.readline from itertools import combinations def find_min(chicken, houses): total = 0 for house in houses: min_dist = INF h_row, h_col = house for c_row, c_col in chicken: dist = abs(h_row - c_row) + abs(h_col - c_c..

Algorithm 2023.07.13