티스토리 뷰
일곱 난쟁이 성공스페셜 저지출처분류
시간 제한메모리 제한제출정답맞은 사람정답 비율
2 초 | 128 MB | 51208 | 21246 | 15863 | 44.120% |
문제
왕비를 피해 일곱 난쟁이들과 함께 평화롭게 생활하고 있던 백설공주에게 위기가 찾아왔다. 일과를 마치고 돌아온 난쟁이가 일곱 명이 아닌 아홉 명이었던 것이다.
아홉 명의 난쟁이는 모두 자신이 "백설 공주와 일곱 난쟁이"의 주인공이라고 주장했다. 뛰어난 수학적 직관력을 가지고 있던 백설공주는, 다행스럽게도 일곱 난쟁이의 키의 합이 100이 됨을 기억해 냈다.
아홉 난쟁이의 키가 주어졌을 때, 백설공주를 도와 일곱 난쟁이를 찾는 프로그램을 작성하시오.
입력
아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.
출력
일곱 난쟁이의 키를 오름차순으로 출력한다. 일곱 난쟁이를 찾을 수 없는 경우는 없다.
예제 입력 1 복사
20 7 23 19 10 15 25 8 13
예제 출력 1 복사
7 8 10 13 19 20 23
출처
Olympiad > 한국정보올림피아드 > 한국정보올림피아드시․도지역본선 > 지역본선 2004 > 초등부 1번
- 어색한 표현을 찾은 사람: upple1
알고리즘 분류
링크:2309번: 일곱 난쟁이 (acmicpc.net)
나의 풀이 방식
7명의 키의 합은 100이므로 9명 키를 모두 받은 다음에 합해서 100을 빼준다. 그러면 난쟁이가 아닌 두명의 키의 합이 나온다. 그리고 반복문을 또 돌려서 만약 두명의 키의 합이 9명의 키를 더한 값에서 100을 뺀 값이라면 그 각각의 키가 들어있는 배열 값에 -1을 넣어준다. 이 때 만약 같은 값(height[i] == height[j])을 인식한다면 continue해서 넘어간다. 그리고 flag를 false로 주고 break를 걸어 j가 돌아가는 반복문을 멈춰준다. 이 때, i 도 멈춰주기 위하여 flag가 false가 있었다면 i에도 break를 걸어 반복을 멈춰준다.
이렇게 난쟁이가 아닌 값은 -1로 넣은 배열을 sort()함수를 사용하여 정렬해주고 -1이 아닌 값만 출력해준다.
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int height[] = new int[9];
int sum = 0;
int sum1 = 0;
boolean flag = true;
for(int i = 0; i < 9; i++) {
height[i] = sc.nextInt();
sum += height[i];
}
sum1 = sum - 100;
for(int i = 0; i < 9; i++) {
for(int j = 1; j < 9; j++) {
if(flag == true) {
if(height[i] == height[j])
continue;
if(sum1 == height[i] + height[j]) {
height[i] = -1;
height[j] = -1;
flag = false;
break;
}
}
}
if(flag == false)
break;
}
Arrays.sort(height); //배열을 정렬하는 함수
for(int x = 0; x < 9; x++) {
if(!(height[x] == -1))
System.out.println(height[x]);
}
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 6603. 로또 (0) | 2021.03.04 |
---|---|
[SWEA] 4865. 글자수 (0) | 2021.02.20 |
[백준] 1244번. 스위치켜고 끄기 (0) | 2021.02.02 |
[백준] 2576. 색종이 - 2 (0) | 2021.01.30 |
[백준] 2563. 색종이 (0) | 2021.01.29 |
- Total
- Today
- Yesterday
- DOM
- django
- git
- commit되돌리기
- vue
- 비동기패턴
- 파이썬
- splide
- 위클리챌린지2주차
- 배포
- Java
- N과M
- 독학
- 싸피
- SWEA
- Python
- SSAFY
- SSAFY퇴소
- 세션 스토리지
- javascript
- 백준
- SQL
- vue.js
- Pyhton
- 프로그래머스
- 안드로이드스튜디오
- 자바
- AWS
- 트리
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |