Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- database
- 코딩테스트
- 애자일
- 클린코드
- 그리디알고리즘
- cleancode
- 개발자
- 애자일프로그래밍
- API
- 코딩
- 데이터베이스
- 백준
- ES
- framework
- Baekjoon
- Spring
- 애자일기법
- 프레임워크
- 스프링
- 읽기쉬운코드
- Elasticsearch
- 자바
- db
- 개발
- Java
- 코드
- JPA
- 그리디
- 알고리즘
- 엘라스틱서치
Archives
- Today
- Total
시뻘건 개발 도전기
[1049번] 기타줄 본문
반응형
문제 기출 : [https://www.acmicpc.net/problem/1049]
풀이 방법
[그리디 알고리즘]으로 접근 낱개의 가격과 6개세트의 가격을 별도로 array에 담는다. 그리고 각각의 가격에서 최소 값이면서 끊어진 라인의 수보다 크거나 같으면 된다.
최소값을 먼저 만족시키기위해 오름차순으로 sort 진행해서 가장 작은 0번째 값으로 먼저 체크하면 최대한 빠르게 찾을 수 있다. |
문제 풀이
public class Main {
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int answer = 0;
try {
StringTokenizer oneLine = new StringTokenizer(br.readLine(), " ");
int crushLine = Integer.parseInt(oneLine.nextToken());
int brands = Integer.parseInt(oneLine.nextToken());
int[] manyAmounts = new int[brands];
int[] oneAmounts = new int[brands];
for (int i = 0; i < brands; i++) {
oneLine = new StringTokenizer(br.readLine(), " ");
manyAmounts[i] = Integer.parseInt(oneLine.nextToken());
oneAmounts[i] = Integer.parseInt(oneLine.nextToken());
}
Arrays.sort(manyAmounts);
Arrays.sort(oneAmounts);
int oneMin = oneAmounts[0];
int manyMin = manyAmounts[0];
while (crushLine > 0) {
if (crushLine < 6) {
answer += Math.min(oneMin * crushLine, manyMin);
crushLine -= 6;
} else {
if (oneMin * 6 >= manyMin) {
crushLine -= 6;
answer += manyMin;
} else {
crushLine -= 6;
answer += (oneMin * 6);
}
}
}
System.out.println(answer);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
반응형
'Business logic > 백준' 카테고리의 다른 글
[1138번] 한 줄로 서기 (0) | 2020.04.12 |
---|---|
[1120번] 문자열 (0) | 2020.04.11 |
[11047번] 동전 0 (0) | 2020.04.11 |
[1080번] 행렬 (0) | 2020.04.10 |
[10610번] 30 (0) | 2020.04.10 |
Comments