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
- 자바
- 웹
- js
- 객체
- npm
- 백준부분수열의합
- 컴퓨터공학
- 자바스크립트
- 데이터베이스
- 타입스크립트
- 브랜치
- API
- 좋아요추가
- 리팩토링
- 깃
- 파이프라인
- gui
- post
- 예외처리
- 백준부분수열의합js
- CS
- 깃허브
- 프로그래머스
- var와let과const차이
- Node.js
- 모던자바스크립트4장
- 오픈소스
- 리액트
- 변수
- Express
Archives
- Today
- Total
Nevertheless
[JAVA] 백준 2798번: 블랙잭 본문
<문제>
https://www.acmicpc.net/problem/2798
2798번: 블랙잭
첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장
www.acmicpc.net
<풀이>
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class P2798 {
//블랙잭
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st=new StringTokenizer(br.readLine());
int n=Integer.parseInt(st.nextToken());
int m=Integer.parseInt(st.nextToken());
int card[]=new int[n];
int sum=0;
int tmp=0;
st=new StringTokenizer(br.readLine());
for(int i=0;i<n;i++) {
card[i]=Integer.parseInt(st.nextToken());
}
for(int i=0;i<n;i++) {
for(int j=i+1;j<n;j++) {
for(int k=j+1;k<n;k++) {
sum=card[i]+card[j]+card[k];
if(tmp<sum && sum<=m)
tmp=sum;
}
}
}
System.out.println(tmp);
}
}
✏️ 풀이 방법
3중 for 문을 통해 모든 경우의 수를 계산한다.
ex ) int card[5] = { 5, 6 ,7 ,8, 9} 일 때 ,
(5,6,7) , (5,6,8), (5,6,9) ..이런식으로 모든 경우의 수를 구하여
입력 받은 m 값과 가장 가까운 sum 값을 찾는다.
tmp 는 이전에 저장된 m과 가장 가까운 수라고 생각하면 된다.
만약, tmp가 sum보다 작고, sum이 m보다 작거나 같으면 tmp 값을 변경한다.
=> 현재 값(sum)이 이전 값(tmp) 보다 큰데 , 현재 값(sum) 이 m보다 작거나 같다,
즉 m과 더 가까운 수라는 뜻이므로 !!
✍🏻 느낀점
나는 예전부터 느꼈지만, 3중 for문의 구조를 쉽게 생각하지 못하는 것 같다.
어떤 방식으로 풀어야될지 몰라서 , 다른 블로그를 참고하여 해결하였다.
알고리즘 공부의 필요성을 정말 느낀다. 🥹
이건 뭐 알고리즘을 사용한 문제도 아닌데, 풀지 못해서 속상하다.
이런 문제도 익숙해지도록 더 열심히 해야지.
'코딩테스트 > Baekjoon' 카테고리의 다른 글
[JAVA] 백준 2002번: 추월 (0) | 2024.03.25 |
---|---|
[JAVA] 백준 1713번: 후보 추천하기 (0) | 2024.03.22 |
[JAVA] 백준 18429번: 근손실 (1) | 2024.03.11 |
[JAVA] 백준 1966번: 프린터 큐 (1) | 2024.03.08 |
[JAVA] 백준 1212번: 8진수 2진수 (0) | 2024.01.11 |