백준
[백준 파이썬] #2309 일곱 난쟁이
풀기 전 생각해보기😮 아홉명 중 조건에 적합하지 않은 2명을 어떻게 구분할까? 풀이🛫 arr = [int(input()) for i in range(9)] arrSum = 0 odd1, odd2 = 0, 0 # 정렬 : 버블 정렬 사용 연습 for i in range(9): for j in range(i+1, 9): if arr[i] > arr[j]: arr[i], arr[j] = arr[j], arr[i] for i in arr: arrSum += i for i in range(9): for j in range(i+1, 9): if arr[i]+arr[j] == arrSum-100: odd1, odd2 = arr[i], arr[j] for i in arr: if i == odd1 or i==odd2: ..
[백준 파이썬] #4396 지뢰 찾기
풀기 전 생각해보기😮 지뢰가 있을 경우 모든 지뢰의 위치 표시 이차원 배열의 방향 탐색 풀이🛫 N = int(input()) mine = [list(input()) for i in range(N)]# 지뢰의 위치 open = [list(input()) for i in range(N)]# 지뢰가 있는지 확인한 위치 zone = [[0 for i in range(N)] for j in range(N)]# 플레이어가 보는 위치 # U UR R DR D DL L UL dcol = [1, 1, 0, -1, -1, -1, 0, 1] drow = [0, 1, 1, 1, 0, -1, -1, -1] for col in range(N): for row in range(N): # 지뢰가 있는 곳 주위의 값 표시 if min..
[SWEA] #4831. 전기버스_파이썬
풀기 전 생각해보기😮 정답을 도출하는데 필요한 조건만 구현하기 인덱스 주의 풀이🛫 T = int(input()) for t in range(T): K, N, M = map(int, input().split()) station = [0] + list(map(int, input().split())) + [10] curIdx = 0# 현재의 위치 charCnt = 0 # 충전 횟수 for i in range(1, M+2): # 목적지에 도달할 수 없는 경우 if station[i] - station[i-1] > K: answer = 0 break if curIdx + K < station[i]: curIdx = station[i] charCnt += 1 print(f"#{t+1}", charCnt) 핵심 정리..
[백준 파이썬] # 2447 별 찍기 - 10
Silver III # 2447 별 찍기 - 10 링크 : https://www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 풀이 N = int(input()) # 빈 공간 생성 arr = [[' '] * N for i in range(N)] # 재귀문 작성 def fill_stars(size, x, y): # size: 확인하려는 공간(n*n)의 크기, x: x좌표, y: 좌표) # 재귀문의 탈출 조건, 더 이상 작아질 수 없을 때 ..
[백준 파이썬] # 1966 프린터 큐
Silver III # 1966 프린터 큐 링크 : https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 풀이 from collections import deque # 테스트 케이스 T개 T = int(input()) for i in range(T): N, M = map(int, input().split()) q = deque(list(map(int, input().split()))) idx = deque(list(range(N))) cnt = 0 # ..
[백준 파이썬] # 11279 최대 힙
Silver II # 11279 최대 힙 링크 : https://www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 www.acmicpc.net 풀이 import heapq import sys N = int(sys.stdin.readline()) heap = [] for i in range(N): x = int(sys.stdin.readline()) if x != 0: heapq.heappush(heap, -x) else: if len(heap) == 0: print(0..
[백준 파이썬] # 3273 두 수의 합
Silver III # 3273 두 수의 합 링크 : https://www.acmicpc.net/problem/3273 3273번: 두 수의 합 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 www.acmicpc.net 풀이 n = int(input()) arr = list(map(int, input().split())) x = int(input()) arr.sort() start, end = 0, n-1 cnt = 0 while start < end: summary = arr[start] + arr[en..
[백준 파이썬] #10815 숫자 카드
Silver IV # 10815 숫자 카드 링크 : https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 풀이 N = int(input()) has = list(map(int, input().split())) has.s6ort() M = int(input()) cards = list(map(int, input().split())) def bs(li, target): start = 0 end = len(li)-1 whil..
[백준 파이썬] # 9095 1, 2, 3 더하기
Silver III # 9095 1, 2, 3 더하기 링크 : https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 풀이 T = int(input()) for i in range(T): n = int(input()) dp = [0] * (n+3) dp[0] = 1 dp[1] = 2 dp[2] = 4 for i in range(3, n): dp[i] = dp[i-3] + dp[i-2] + dp[i-1] print(dp[-4]) 후기 동적 프로그래밍 문제라는 것을 캐치하면 규칙성을 발견할 수 있다 (동적 프로그래밍 문제인지 여부를 빠르게 파악하는 방법..
[백준 파이썬] # 11286 절댓값 힙
Silver I # 11286 절댓값 힙 링크 : https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 풀이 import heapq import sys heap = [] N = int(sys.stdin.readline()) for i in range(N): x = int(sys.stdin.readline()) if x == 0: if len(heap) == 0: print(0) else: print(heapq.heappop(he..