일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SSAFY 테스트
- 코로나 싫어요
- 자고 싶다
- SSAFY 화이팅
- have a nice day
- DP
- 텐션 업 10기!
- 우유가 옆으로 넘어지면 아야
- DFS
- 텐션 업 10기 화이팅
- 우유아야
- HAVE A GOOD DAY
- 우유가옆으로넘어지면아야
- SSAFY IM/A
- 모르고리즘
- 아자아자 화이팅
- I am Korean
- BFS
- SeongSeobDang
- Hamming weight
- Have a good day :)
- Have a nice day.
- amazon
- 네트워크
- Java 환경 설정
- 수학
- SSAFY 10기 화이팅
- 자료구조
- LeetCode #릿코드 #좋은 하루 되세요 #Have a nice day
- Today
- Total
Hope Everyone Is Happy
[브론즈1] 2309. 일곱 난쟁이 (Java) 본문
[브론즈1] 2309. 일곱 난쟁이 (Java)
J 크 2023. 7. 25. 16:40https://www.acmicpc.net/problem/2309
2309번: 일곱 난쟁이
아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.
www.acmicpc.net
SSAFY 10기 화이팅~~ 합격 후기 언제올리지..
문제는 아홉 명의 난쟁이 중 진짜 일곱 난쟁이를 찾는 문제로, 입력에 9명 난쟁이의 키가 주어졌을 때, 7명의 난쟁이들의 키의 합이 100이 되는 난쟁이들을 찾은 뒤, 해당 난쟁이 7명의 키를 오름차순으로 출력하는 문제입니다.
Example :
◈ Input
20
7
23
19
10
15
25
8
13
◈ Output
7
8
10
13
19
20
23
해당 문제는 각 배열을 탐색할 수 있는 변수 2개를 만들어서 9개의 배열 (0~8번) 중 차례대로 (0,1)번 값 (난쟁이 두 명의 키)를 제외 후 더해보고 이후 순서대로 (0,2)번 제외, (0,3)번 제외~~ (1,2) 제외, (1,3) 제외~ 순서로 만들었습니다. 아래 코드에서는 (FirstPoint, SecondPoint)로 이해하시고 코드를 읽어보시면 조금 더 이해하는데 도움이 될 것 같습니다.
코드 작성 전, 아래와 같이 솔루션을 정리하였습니다.
▶ 입력된 Array를 오름차순으로 선 정렬 ( Arrays.sort 활용)
▶ FirstPoint, SecondPoint를 활용하여 제외할 배열 값 2개를 정한 후 값을 더하여 100이 될 때 까지 탐색
▶ 탐색 방법 : FirstPoint = 0부터, SecondPoint= 1 부터 시작하여 SecondPoint 가 마지막 번호에 도달하면 FirstPoint++
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int[] arrDwarf = new int[9];
for(int i = 0; i < 9; i++)
arrDwarf[i] = Integer.parseInt(br.readLine());
Arrays.sort(arrDwarf);
int nSum =0;
int nFirstPoint = 0;
int nSecondPoint = 1;
while(nFirstPoint < arrDwarf.length -1) {
nSum = 0;
for(int i = 0; i < 9; i++) {
if(i != nFirstPoint && i != nSecondPoint)
nSum += arrDwarf[i];
}
if(nSum == 100)
break;
nSecondPoint++;
if(nSecondPoint == arrDwarf.length) {
nFirstPoint++;
nSecondPoint = nFirstPoint + 1;
}
}
for(int i = 0; i < 9; i++) {
if(i != nFirstPoint && i != nSecondPoint)
bw.write((arrDwarf[i]) + "\n");
}
bw.flush();
bw.close();
}
}
BufferedReader/Writer가 빨라져서 좋긴 한데, 코드가 지저분해지는 것 같아서 불편하네요. 갑자기 그리운 C++
긴 글 읽어주셔서 감사합니다!
Good Luck! (피드백 고맙습니다)
'※ 백준 (Baekjoon) > [Java] 문제 풀이 ( Solve the problems)' 카테고리의 다른 글
[실버5] 4673. 셀프 넘버 (Java) (0) | 2023.07.27 |
---|---|
[실버3] 17413. 단어 뒤집기2 (Java) (2) | 2023.07.26 |
[실버5] 1193. 분수찾기 (Java) (0) | 2023.07.24 |
[브론즈3] 17945. 통학의 신 (Java) (2) | 2023.07.21 |
[실버5] 2063. 색종이 (Java) (0) | 2023.07.20 |