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
- 코테
- 코딩테스트
- Binary Search
- hash table
- two pointers
- Stack
- Method
- Matrix
- Binary Tree
- implement
- database
- sorting
- 구현
- geometry
- 자바
- Math
- Number Theory
- bit manipulation
- Class
- Tree
- java
- string
- simulation
- greedy
- array
- dynamic programming
- Data Structure
- Counting
- 파이썬
- SQL
Archives
- Today
- Total
코린이의 소소한 공부노트
[백준 온라인 저지] 2798. 블랙잭 본문
- 입력: 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장을 찾을 수 있는 경우만 입력으로 주어진다.
- 출력: 첫째 줄에 M을 넘지 않으면서 M에 최대한 가까운 카드 3장의 합을 출력한다.
import java.util.*;
import java.io.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer token = new StringTokenizer(br.readLine());
int[] nums = new int[Integer.parseInt(token.nextToken())];
int m = Integer.parseInt(token.nextToken()), answer = 0;
token = new StringTokenizer(br.readLine());
for(int i=0 ; i<nums.length ; i++)
nums[i] = Integer.parseInt(token.nextToken());
Loop1: for(int i=0 ; i<nums.length-2 ; i++)
for(int j=i+1 ; j<nums.length-1 ; j++)
for(int k=j+1 ; k<nums.length ; k++){
int sum = nums[i]+nums[j]+nums[k];
if(sum==m){
answer = m;
break Loop1;
}
else if(sum<m && Math.abs(sum-m)<Math.abs(answer-m))
answer = sum;
}
System.out.print(answer);
}
}
'코딩테스트 풀이 > JAVA' 카테고리의 다른 글
[백준 온라인 저지] 2587. 대표값2 (0) | 2023.04.07 |
---|---|
[백준 온라인 저지] 2750. 수 정렬하기 (0) | 2023.04.07 |
[백준 온라인 저지] 24313. 알고리즘 수업 - 점근적 표기 1 (0) | 2023.04.07 |
[백준 온라인 저지] 24267. 알고리즘 수업 - 알고리즘의 수행 시간 6 (0) | 2023.04.07 |
[백준 온라인 저지] 24266. 알고리즘 수업 - 알고리즘의 수행 시간 5 (0) | 2023.04.07 |