일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- abstract
- ㅇ
- throws
- IMPLEMENT
- jvm
- opcode
- Interface
- 회피
- Navigation Component
- 보안
- 일상회피
- extends
- static
- 취약점
- Android
- bytecode 분석
- 치유
- javap
- bytecode
- HelloWorld
- 보안취약점
- 심리여행
- 여행계획
- 일상탈출
- 여행
- Transition
- Recylcer
- Shared Elements
- 심리학
- 버킷리스트
Archives
- Today
- Total
패스트터틀
(Baekjoon) GreedyAlgorithm - (11) 기타줄 본문
https://www.acmicpc.net/problem/1049
문제를 똑바로 읽어야했다.
기타줄이 총 6줄인데 더 이상 살필요가있어? 라고 생각했다가 틀려버렸다.
N은 0~100이라고 쓰여있다.
기타줄이 어떻게 50개가 끊어지는지 의문이지만 그냥 기타가 엉청많고 끊어질때마다 다른기타를 사용하다가 이제는 더이상 안되겠다 싶어서 기타줄을 구매한경우라고 생각하자. 한마디로 crazy놈이다.
1) 6개 이하인지 6개 이상인지 // 6개 이하면 <비교> (낱개 * 개수) vs (패키지) 6개 이상이면
2) <비교> (패키지) vs (낱개 * 6) //오름차순정리으로 비교하기
3) 전부다 계산후 남은것에서도 1번과 2번 비교
package GreedyAlgorithm;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
// 패키지 vs 낱개
// 6개이하 vs 6개이상
// 전부다 계산후 남은것에서도 패키지 vs 낱개
public class _1049 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] input = br.readLine().split(" ");
int cutoff = Integer.parseInt(input[0]), brand = Integer.parseInt(input[1]), pkg[] = new int[brand],col[] = new int[brand],cut;
if(cutoff < 6 )
cut = cutoff;
else
cut = 6;
for (int i = 0; i < brand; i++) {
input = br.readLine().split(" ");
pkg[i] = Integer.parseInt(input[0]);
col[i] = Integer.parseInt(input[1])*cut; // 1234566666.. 이런식으로 비교를 해야하기 떄문에 cut을 참고하는것
}
Arrays.sort(pkg);
Arrays.sort(col);
if(pkg[0] > col[0]){ // 낱개가 더쌀경우
System.out.println(cutoff*(col[0]/cut));
}
else{ // 패키지가 더 쌀경우
if(cut < 6)
System.out.println(pkg[0]);
else{
if(col[0]/cut*(cutoff % 6) < pkg[0]) // 패키지가 더 싸고 그 나머지를 구입할경우에도 낱개가 더 유리한경우
System.out.println(pkg[0]*(int)(cutoff/cut) + (col[0]/cut)*(cutoff % 6) );
else // 패키지가 더 싸고 그 나머지를 구입한경우에도 패키지가 더 싼경우
System.out.println(pkg[0]*(int)(cutoff/cut) + pkg[0] );
}
}
}
}
백준문제풀이Github :
https://github.com/sdk0213/baekjoon-study
'Algorithm > baekjoon' 카테고리의 다른 글
(Baekjoon) backtracking - (1) 로또 (0) | 2019.11.15 |
---|---|
(Baekjoon) dfs,bfs - (1) dfs,bfs (0) | 2019.11.13 |
(Baekjoon) GreedyAlgorithm - (10) 신입사원 (0) | 2019.11.10 |
(Baekjoon) GreedyAlgorithm - (9) 잃어버린 괄호 (0) | 2019.11.08 |
(Baekjoon) GreedyAlgorithm - (8) 문자열 (0) | 2019.11.08 |
Comments