본문 바로가기

공부하는 것들

(52)
백준 20300번: 서강근육맨(그리디) 문제 요약: 서강헬스클럽은 PT 한번당 운동기구 두개만 사용 가능. 겹치지 않게 모두 한번씩 사용(홀수인 경우, 마지막 PT에서는 하나의 기구만) 운동기구마다 근손실 정도가 다르고, 근손실의 최솟값(M)을 구하라. INPUT : 운동기구의 갯수// 운동기구의 근손실을 나타내는 정수 OUTPUT: M의 최솟값 이전 문제(Project Teams) 와 다른 것은, 이전은 MIN이 MAX가 되도록 구하는 것이었는데, 이번 문제는, MAX가 MIN이 되도록 구하는 것이라는 점이다. def solve(N, items): items = sorted(items) groups = [] if N%2==1: groups=[[items[i],items[N-2-i]] for i in range(N//2)]+[[items[-1..
백준 20044 : Project teams(그리디) https://www.acmicpc.net/problem/20044 20044번: Project Teams 입력은 표준입력을 사용한다. 입력의 첫 번째 행에는 팀 수를 나타내는 양의 정수 n(1 ≤ n ≤ 5,000)이 주어진다. 그 다음 행에 학생 si 의 코딩 역량 w(si)를 나타내는 2n개의 양의 정수가 공백으로 www.acmicpc.net 나눌 팀의 수가 정해지고, 학생들의 코딩 실력이 정해진다. 가장 실력의 합이 낮은 팀의 코딩 실력이 가장 크게 조를 구성해라. INPUT : 팀의 수 // 학생들의 코딩 실력 OUTPUT : 가장 실력이 낮은 팀의 코딩실력 합 문제 풀이: 꼭 2인이서만 팀을 짜야 하기 때문에 가장 낮은 순과 가장 높은 순을 묶어주면 된다. def solve(N, student..
백준 16162 : 가희와 3단 고음(그리디) https://www.acmicpc.net/problem/16162 16162번: 가희와 3단 고음 첫째 줄에 참가자들의 음의 개수를 나타내는 정수 N(1 ≤ N ≤ 2 x 104), 고음의 첫 항과 공차를 의미하는 정수 A, D(1 ≤ A, D ≤ 107)가 공백으로 구분되어 주어진다. 둘째 줄에 참가자들의 음을 www.acmicpc.net 문제 요약: 대회에서는 처음 음(A), 공차(D) 대로 쌓은 고음만 n단 고음으로 처리해준다. 참가자들이 부른 N개의 음에서 정해진 규칙대로 쌓은 고음의 단수를 찾아라. INPUT : N, A, D // 참가자가 부른 음 N개 OUTPUT : 참가자의 고음 단수 D만 정해져있다면 어려웠을텐데, A가 정해져 있어서 쉬웠다. for문을 돌면서 그 다음 항에 나올 음이 ..
백준 13413번 : 오셀로 재배치(그리디) 문제 요약: 흑 또는 백 이루어진 로봇을 흑백 교차하는 로봇으로 변형하는 것. 두가지 작업 중 하나를 골라 진행할 수 있다. 1. 배치된 말 중 임의의 2개의 말을 골라 서로의 위치를 바꾼다. 2. 말 1개를 들어 뒤집어 놓아 색상을 변경한다. INPUT: 각 테스트 케이스 당: 말의 갯수, 초기 상태, 목표 상태 OUTPUT : 필요한 작업 최소횟수 풀이: summ에서는 알파벳이 다른 위치의 총 갯수를, subt에서는 'B'-->'W'인 경우와 'B'-->'W'인 경우를 부호가 반대로 되게 표시해줌. sum(subt)를 통해, 1, -1인 자리들은 합쳐서 0이 됨. 즉, 자리 교환. 남은 1 또는 -1들의 갯수가 뒤집어야 하는 갯수. def solve(ini, fin): ini_int = [int(i ..
백준 13305 : 주유소(그리디) https://www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 문제 요약: 어떤 나라에 일직선 도로 위에 N개의 도시가 있다. 차로 이동하려고 한다. 기름통의 크기는 무제한, 1키로에 1리터 사용. 도시마다 단 하나의 주유소가 있으며, 주유소의 기름 가격은 상이. INPUT : 도시에 있는 주유소의 기름 가격, 도로의 길이 OUTPUT: 제일 왼쪽 도시에서 오른쪽 도시로 이동하는 최소의 비용 처음 풀이: 58점이 나왔다. 서브태스크 2까지는 도..
백준 14720: 우유 축제(DP) ** www.acmicpc.net/problem/14720 14720번: 우유 축제 영학이는 딸기우유, 초코우유, 바나나우유를 좋아한다. 입맛이 매우 까다로운 영학이는 자신만의 우유를 마시는 규칙이 있다. 맨 처음에는 딸기우유를 한 팩 마신다. 딸기우유를 한 팩 마신 후 www.acmicpc.net 마시는 규칙 : 처음은 무조건 딸기 딸기--> 초코--> 바나나 -->딸기 순으로 먹어야 함. 첫째 줄에 우유 가게의 수 N이 주어진다. (1 ≤ N ≤ 1000) 둘째 줄에는 우유 가게 정보가 우유 거리의 시작부터 끝까지 순서대로 N개의 정수로 주어진다. 우유 가게마다 마시거나(1) 마시지 않거나(0). 한번 지나간 가게는 돌아갈 수 없음. 0 : 딸기우유만을 파는 가게, 1 : 초코우유만을 파는 가게, 2 : ..
백준 12782 : 비트 우정지수(그리디) www.acmicpc.net/problem/12782 12782번: 비트 우정지수 진홍이는 숫자를 좋아한다. 오늘도 숫자를 가지고 놀던 진홍이는 두 숫자의 비트 우정지수를 구해보았다. 비트 우정지수란, 10진법으로 나타낸 두 정수를 이진수로 나타내었을 때, 두 숫자를 같 www.acmicpc.net 두개의 이진수를 각 자릿수를 뺸다. --> 위가 0,아래가 1인 경우는 -1 / 위가 1, 아래가 0으로 다른 경우는 1이 나올것이다. 1과 -1은 페어가 되므로, 두개를 짝지어서 바꿔줌으로써 한번의 기회를 쓸 수 있다. 바꿀 수 있을만큼 바꿔주고, 남아있는 것은 0을 1로 뒤집어주는 1번연산을 사용해야 함. def solve(A,B): diff = [A[i]-B[i] for i in range(len(A))..
백준 11256 : 사탕 (그리디) www.acmicpc.net/problem/11256www.acmicpc.net/problem/11256 11256번: 사탕 당신은 사탕 공장의 주인이다. 날마다, 당신은 J개의 사탕을 가게에 보내기 위해 상자에 포장해야 한다. 당신은 크기가 다른 상자 N개를 가지고 있다. 당신은 편리를 위해 상자를 최소한으로 쓰 www.acmicpc.net N개의 상자로 J개의 사탕을 포장해야함(최소 상자) Input: J, N (사탕 갯수, 상자 크기) Output : 최소로 필요한 상자의 수 사탕 갯수와 상자의 용량을 인풋으로 받는다. 상자의 인풋은 [list(map(int,input().split())) for _ in range(N)] 으로 받으면 for문 없이 받아줄 수 있다. 가장 용량이 큰 상자부터 사용하..