Python 16

백준 14719번 빗물 파이썬

https://www.acmicpc.net/problem/14719 14719번: 빗물 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치 www.acmicpc.net 내 코드 h, w = map(int, input().split()) blocks = list(map(int, input().split())) result = 0 for i in range(1, w-1): left_max = max(blocks[:i]) right_max = max(blocks[i+1:]) standard = min(left_max, right_max) depth ..

BOJ/Python 2024.03.19

백준 1966번 프린터 큐 파이썬

https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 내 답안 from collections import deque N = int(input()) for i in range(N): N, M = map(int, input().split()) priority = deque(list(map(int, input().split()))) ind = deque([i for i in range(N)]) cnt = 0 while priority: m = max(prio..

BOJ/Python 2024.03.08

[프로그래머스] 의상 파이썬

https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 답안 from collections import defaultdict def solution(clothes): dic = defaultdict(int) answer = 1 for _, y in clothes: dic[y] += 1 for _, j in dic.items(): answer *= (j+1) return answer-1 Review 이 문제는 보자마자 구현이 아닌 수학적으로 접근해야..

BOJ/Python 2024.02.12

[프로그래머스] 더 맵게 파이썬 heapq

https://school.programmers.co.kr/learn/courses/30/lessons/42626 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 코드 import heapq def solution(scoville, K): heapq.heapify(scoville) cnt = 0 while scoville[0] = 2: min_1 = heapq.heappop(scoville) min_2 = heapq.heappop(scoville) heapq.heappush(scoville, min_1 + (mi..

프로그래머스 2023.06.23

백준 1238번 파티 파이썬

https://www.acmicpc.net/problem/1238 1238번: 파티 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), X가 공백으로 구분되어 입력된다. 두 번째 줄부터 M+1번째 줄까지 i번째 도로의 시작점, 끝점, 그리고 이 도로를 지나는데 필요한 소요시간 Ti가 들어 www.acmicpc.net 내 코드 import heapq import sys input = sys.stdin.readline INF = int(1e9) N, M, X = map(int, input().split()) graph = [[] for i in range(N + 1)] distance = [INF] * (N + 1) # 최단 거리 테이블을 무한으로 초기화 answer = [] for..

BOJ/Python 2023.06.22

[Python] defaultdict 딕셔너리 기본값 설정하는 방법

딕셔너리에 대한 문제 해결을 하면서 keyError를 처리하기 위해, key 값과 value 값을 넣어서 초기화를 해준 기억이 있다. 대표적으로 문자열에서의 쓰인 알파벳 개수를 판단하기 위해 사용하면 편리하다. "hello world" 라는 문장에서 각 알파벳의 개수를 딕셔너리 형태로 나타내고 싶을 때, 나는 보통 아래처럼 표현 하였다. str = "hello world" d = dict() for i in str: if i not in d: d[i] = 0 d[i] += 1 print(d) # {'h': 1, 'e': 1, 'l': 3, 'o': 2, ' ': 1, 'w': 1, 'r': 1, 'd': 1} if i not in d: d[i] = 0 for문 안에 이 코드가 존재하는 이유는 딕셔너리에 ..

Algorithm 2023.06.21

[Python] 문자열 치환하는 방법 replace

replace str.replace(old, new[, count]) 모든 부분 문자열 old 가 new 로 치환된 문자열의 복사본을 돌려줍니다. 선택적 인자 count 가 주어지면, 앞의 count 개만 치환됩니다. old : 바꾸고 싶은 문자열 new : 새로 바꾸고 싶은 문자열 count : 앞에서 부터 count 개수 만큼 문자 바꾸기 예시 ) a = "hello world" b = "abcd****efgh" print(a.replace("hello", "hi")) print(b.replace("*", "0")) # 전부 변경 print(b.replace("*", "0", 2)) # 부분 변경 (앞에서 부터) """ *output* hi world abcd0000efgh abcd00**efgh """

Algorithm 2023.04.06

백준 2606번 바이러스 파이썬 DFS

https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 답안 def dfs(graph, v, visited): visited[v] = True for i in graph[v]: if not visited[i]: dfs(graph, i, visited) n = int(input()) m = int(input()) visited = [False] * (n+1) graph = [[] for _ in range(n+1)] lst = [] for _ in range..

BOJ/Python 2022.02.05

백준 1712번 손익분기점 파이썬

https://www.acmicpc.net/problem/1712 1712번: 손익분기점 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 www.acmicpc.net 손익 분기점은 판매비용 - 가변비용 = 한계이익을 나타내고 고정 비용으로 나누면 손익 분기점의 시행 횟수를 구할 수 있게 된다. 경제학을 공부하는 게 아니니 이 부분은 넘어가고, 코드를 짜보면 A, B, C = map(int, input().split()) if B < C: count = A / (C-B) count += 1 print(int(count)) else: print("-1") 이런 식으로 ..

BOJ/Python 2021.07.23

백준 1297번 TV크기 파이썬

https://www.acmicpc.net/problem/1297 1297번: TV 크기 김탑은 TV를 사러 인터넷 쇼핑몰에 들어갔다. 쇼핑을 하던 중에, TV의 크기는 그 TV의 대각선의 길이로 나타낸 다는 것을 알았다. 하지만, 김탑은 대각선의 길이가 같다고 해도, 실제 TV의 크기는 www.acmicpc.net 내 답안 d, h, w = map(int, input().split()) height = int((h*d) / (((h**2) + (w**2)) **(1/2))) width = int((w*d) / (((h**2) + (w**2)) **(1/2))) print(height, width) Review 피타고라스 정리와 비율을 이용한 간단한 수학문제입니다 ! 손으로 계산하고 그 결과를 그대로 코..

BOJ/Python 2021.07.23