파이썬

    [SWEA] 1204. 최빈수 구하기_파이썬

    풀기 전 생각해보기😮 딕셔너리 타입의 key, value를 조회하는 방법 최대 value를 갖는 key를 어떻게 찾을 수 있는가? 풀이 # 1204. 최빈수 구하기 T = int(input()) for i in range(T): num = int(input()) li = list(map(int, input().split())) dic = {} for i in li: if i in dic: dic[i] += 1 else: dic[i] = 0 # 딕셔너리 타입의 value가 가장 큰 key를 찾을 때 # max(data, key = data.get) print("#"+str(num), max(dic, key=dic.get)) 핵심 정리🎁 dic에서 최대 value를 갖는 key 값 찾기 max_value_k..

    [SWEA] 1859. 백만 장자 프로젝트_파이썬

    풀기 전 생각해보기😮 리스트를 역순으로 뒤집었을 때 풀이과정에 필요한 기준점을 발견하기 쉬워질 수 있다. → 주어진 값을 그대로만 볼 것이 아니라 다른 관점에서도 바라볼 수 있어야 한다. 풀이 # 테스트 케이스의 입력 N = int(input()) for j in range(N): # 출력에 필요한 값 입력 n = int(input()) li = list(map(int, input().split())) # 큰 수를 기준으로 리스트 요소와 차이를 구해야 함 # 리스트를 역순으로 배치할 때 index값과 j 값 비교가 수월해짐 r = list(reversed(li)) idx = r[0] # profit = 0 # 결과값 합계를 담는 변수 for i in r: if i < idx: profit += idx -..

    [백준 파이썬] # 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..

    [백준 파이썬] # 11549 구간 합 구하기 4

    Silver III # 11659 구간 합 구하기 4 링크 : https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 풀이 import sys N, M = map(int, sys.stdin.readline().split()) li = list(map(int, sys.stdin.readline().split())) summary = 0 prefix_sum = [0] for i in li: summary += i prefix_sum..