본문 바로가기

반응형

Problem Solving/BOJ-Silver

(37)
(Python) 백준 2583 - 영역 구하기 https://www.acmicpc.net/problem/2583 아이디어가로, 세로의 길이가 각각 m,n이고 원소가 0인 배열을 생성한 후, 입력받은 범위의 값을 -1로 변환배열의 0인 원소들을 특정 값으로 변환한 후 탐색을 시행, 인접 칸이 0일 시 같은 값으로 변환변환한 횟수를 별도의 배열에 저장한 후, 정렬하여 출력 코드import sysinput = sys.stdin.readlinem,n,k = map(int,input().split())a = [[0]*n for _ in range(m)]for _ in range(k): x1,y1,x2,y2 = map(int,input().split()) for i in range(y1,y2): a[i][x1:x2]=[-1]*(x2-x1)dy,dx=[1,-1..
(Python) 백준 13305 - 주유소 https://www.acmicpc.net/problem/13305 아이디어가격 배열을 순회하면서 해당 가격이 가장 저렴한 구간을 구한다.기름 가격과 가격이 가장 저렴한 구간의 곱을 합한다. 코드total = int(input())dist, cost = [[*map(int,input().split())] for _ in range(2)]selected = [0]*(total-1)min_cost = cost[0]argmin = 0for i in range(total-1): if min_cost > cost[i]: min_cost = cost[i] argmin = i selected[argmin] += dist[i] print(sum([x*y for x,y in zip(cost, selected)]))
(Python) 백준 11637 - 인기 투표 https://www.acmicpc.net/problem/11637 11637번: 인기 투표 각 테스트 케이스는 첫 번째 줄부터 순서대로 출력된다. 최다 득표자가 과반수 득표를 했을경우에는 "majority winner R", 절반 이하의 득표를 하였을 경우엔 "minority winner R"가 되며, 최다 득표자가 없 www.acmicpc.net 아이디어 먼저 최다 득표자가 여러 명 인지 체크한다. 최다 득표자가 1명일 시, 절반 이상을 득표했는지 체크한다. 코드 import sys input=sys.stdin.readline for _ in range(int(input())): a=[int(input()) for _ in range(int(input()))] m=max(a) if a.count(m)..
(Python) 백준 11047 - 동전 0 https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 아이디어 가치가 큰 동전부터 순차적으로 사용한다. 코드 n,m=map(int,input().split()) a=[int(input()) for _ in range(n)][::-1] c=0 for x in a:c,m=c+m//x,m%x print(c)
(Python) 백준 2822 - 점수 계산 https://www.acmicpc.net/problem/2822 2822번: 점수 계산 8개 줄에 걸쳐서 각 문제에 대한 참가자의 점수가 주어진다. 점수는 0보다 크거나 같고, 150보다 작거나 같다. 모든 문제에 대한 점수는 서로 다르다. 입력으로 주어지는 순서대로 1번 문제, 2번 문 www.acmicpc.net 아이디어 입력 받은 점수와 인덱스를 짝지은 다음, 점수 기준으로 정렬하여 상위 5개 쌍만 남긴다 점수의 합 및 인덱스를 출력한다. 코드 s=sorted([(int(input()),i) for i in range(1,9)])[3:] print(sum([x[0] for x in s])) print(*sorted([x[1] for x in s]))
(Python) 백준 2980 - 도로와 신호등 https://www.acmicpc.net/problem/2980 2980번: 도로와 신호등 상근이는 트럭을 가지고 긴 일직선 도로를 운전하고 있다. 도로에는 신호등이 설치되어 있다. 상근이는 각 신호등에 대해서 빨간 불이 지속되는 시간과 초록 불이 지속되는 시간을 미리 구해왔 www.acmicpc.net 아이디어 각각의 신호등에 대하여 다음 연산을 수행한다. 걸린 시간에 (다음 신호등의 위치 - 현재 위치) 만큼을 더해준다. 걸린 시간을 (빨간불 시간 + 초록불 시간)으로 나눈 나머지값이 빨간불 시간보다 작을 시, 빨간불 시간에서 앞에서 구한 값을 뺀 만큼을 걸린 시간에 더해준다 현재 위치를 업데이트한다. 모든 신호등을 다 지났다면 (도로의 길이-현재 위치) 만큼을 시간에 더해준다. 코드 n,l=map..
(Python) 백준 11726 - 2Xn 타일링 https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 아이디어 n=1 일 시 1, n=2일 시 2 이다. n>2 일 시, n-1 일 때의 값과 n-2일 때의 값의 합과 같다. (피보나치 수열) 코드 n=int(input()) d=[0,1,2] for i in range(2,n):d+=[d[i]+d[i-1]] print(d[n]%10007)
(Python) 백준 11256 - 사탕 https://www.acmicpc.net/problem/11256 11256번: 사탕 당신은 사탕 공장의 주인이다. 날마다, 당신은 J개의 사탕을 가게에 보내기 위해 상자에 포장해야 한다. 당신은 크기가 다른 상자 N개를 가지고 있다. 당신은 편리를 위해 상자를 최소한으로 쓰 www.acmicpc.net 아이디어 상자의 가로와 세로의 곱을 배열에 추가한 다음 내림차순 정렬한다. 사탕의 개수를 초과할 때 까지 배열의 원소들을 합한다. 코드 import sys input=sys.stdin.readline for _ in range(int(input())): j,n=map(int,input().split()) i,s=0,0 a=[[*map(int,input().split())] for _ in range(n..
(Python) 백준 1213 - 팰린드롬 만들기 https://www.acmicpc.net/problem/1213
(Python) 백준 2839 - 설탕 배달 https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 아이디어 무게를 정확히 맞출 수 없는 경우는 n이 4 혹은 7일 때 이다. 음수가 아닌 정수 p,q에 대하여 n= 5p+3q 를 만족하는 (p,q) 중 p가 최대일 때의 p+q를 구한다. 코드 n=int(input()) if n in (4,7):print(-1);exit() p=n//5 while p>=0: if (n-p*5)%3==0: print(p+(n-p*5)//3);break p-=1

반응형