본문 바로가기
ALGORITHM/푼 문제들&과정

[JAVA] 백준 10817번

by sjs_2215 2019. 2. 1.

https://www.acmicpc.net/problem/10817

첫 번째 시도:

배열에 세 정수를 넣어서 정렬 후 배열에서 두 번째 정수를 출력하기로 함

문제점:

정렬을 구현 못하겠음

package till;
import java.util.Scanner;

public class Main{
public static void main(String[] args) {

Scanner scan=new Scanner(System.in);
int a=scan.nextInt();
int b=scan.nextInt();
int c=scan.nextInt();

int[] order={a,b,c};
int temp=a;

for(int i=0;i<2;i++){
if(temp>order[i+1]){
temp=order[i+1];
order[i+1]=order[i];
order[i]=temp;
}

}

System.out.println(order[1]);
}
}


두 번째 시도:

입력받는 부분도 깔끔히 정리함

최대값을 구하고, 최대값의 인덱스를 구해 겂나 많은 if문으로 해결함

변명) 단계별로 풀기 하는 중인데 if문 사용하기 섹션에 있어서 if문으로 해봄 ^_^

문제점:

세상에 이렇게 무식한 방법이 없음

코드는 맞음

package till;
import java.util.Scanner;

public class Main{
public static void main(String[] args) {

Scanner scan=new Scanner(System.in);

int[] order=new int[3];
int a=0;

for(int i=0;i<order.length;i++){
a=scan.nextInt();
order[i]=a;
}

//최댓값 구하기
int x=0;
int temp=order[0];
for(int j=0;j<order.length;j++){
if(temp<order[j]){
temp=order[j];
x=j;
}
}

int result=0;
if(x==1){
if(order[x-1]<order[x+1]){
result=order[x+1];
}
else{
result=order[x-1];
}
} else if(x==0){
if(order[x+1]<order[x+2]){
result=order[x+2];
}
else{
result=order[x+1];
}
}else if(x==2) {
if(order[x-2]<order[x-1]){
result=order[x-1];
}
else{
result=order[x-2];
}
}

System.out.println(result);
}
}


세 번째 시도(해답봄):

역시.. 더 쉽게 할 수 있는 메소드가 있었음

Arrays 클래스의 sort메소드 사용하면 됨

package till;
import java.util.Arrays;
import java.util.Scanner;

public class Main{
public static void main(String[] args) {

Scanner scan=new Scanner(System.in);

int[] order=new int[3];
int a=0;

for(int i=0;i<order.length;i++){
a=scan.nextInt();
order[i]=a;
}

Arrays.sort(order);
System.out.println(order[1]);
}
}


'ALGORITHM > 푼 문제들&과정' 카테고리의 다른 글

[JAVA] 백준 1065번  (0) 2019.03.03
[JAVA] 백준 4344번  (0) 2019.02.27
[JAVA] 백준 4673번  (0) 2019.02.26
[JAVA] 백준 1924번  (0) 2019.01.31
[JAVA] 백준 11720번  (0) 2019.01.30

Comments