1. 문제
2. 풀이
** 단 , 입력받은 세 개의 숫자를 비교하여 큰 수를 빗변으로 설정해 풀어야 하는 조건을 새로 추가하여 풀었다. **
-- MINE🔥
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
while (true) {
int max = 0;
System.out.print("숫자 입력 :");
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
if ((a > 0 && a <= 30000) && (b > 0 && b <= 30000) && (c > 0 && c <= 30000)) {
if (a > b && a > c) {
max = a;
if ((b * b) + (c * c) == max * max) {
System.out.println("right");
} else {
System.out.println("wrong");
}
} else if (b > a && b > c) {
max = b;
if ((a * a) + (c * c) == max * max) {
System.out.println("right");
} else {
System.out.println("wrong");
}
} else if (c > a && c > b) {
max = c;
if ((a * a) + (b * b) == max * max) {
System.out.println("right");
} else {
System.out.println("wrong");
}
}
} else {
break;
}
}
}
-- OTHER WAY 💡 : 배열을 이용한 풀이
public static void main(String[] args) {
while (true) {
int a[] = new int[3];
Scanner sc = new Scanner(System.in);
System.out.print("각변의 길이 3가지 입력 :");
a[0] = sc.nextInt();
a[1] = sc.nextInt();
a[2] = sc.nextInt();
if (a[0] == 0 && a[1] == 0 && a[2] == 0)
break;
for (int i = 0; i < 3; i++) {
if (a[i] < 0 || a[i] > 30000) {
System.out.println("30000미만의 양수를 입력하세요");
break;
} else {
Arrays.sort(a);
if ((a[0] * a[0]) + (a[1] * a[1]) == (a[2] * a[2]) && (a[0] * a[1] * a[2]) != 0) {
System.out.println("right");
continue;
} else {
System.out.println("wrong");
continue;
}
}
}
}
}
-- OTHER WAY 2 💡 : 메소드 호출을 사용한 풀이
public class day2_2 {
private static int max;
private static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
while(true) {
//제일 중요 -> 3개의 숫자를 받을 때 처음에 반드시 MAX 0 으로 초기화
max = 0;
//각각의 변수 다 max() 메소드 이용하여 초기화
System.out.print("INPUT FIRST NUBMER : ");
int x = max();
System.out.print("INPUT SECOND NUBMER : ");
int y = max();
System.out.print("INPUT THIRD NUBMER : ");
int z = max();
//max가 0인 경우 종료
if(max == 0) {
System.exit(0);
}
//그 이외의 경우 직각삼각형 여부 판단
else {
//x가 최대인 경우
if(x == max) {
if(Math.pow(x, 2) == Math.pow(y,2) + Math.pow(z,2)) {
System.out.println("right");
}
else {
System.out.println("wrong");
}
}
//y가 최대인 경우
else if(y == max) {
if(Math.pow(y, 2) == Math.pow(x,2) + Math.pow(z,2)) {
System.out.println("right");
}
else {
System.out.println("wrong");
}
}
//z가 최대인 경우
else {
if(Math.pow(z, 2) == Math.pow(x,2) + Math.pow(y,2)) {
System.out.println("right");
}
else {
System.out.println("wrong");
}
}
}
}
}
//max method
public static int max() {
int num = sc.nextInt();
//범위 이외의 것은 계속 받기
while(true) {
if(num < 0 || num >= 30001) {
System.out.print("INPUT NUMBER REPLAY : ");
num = sc.nextInt();
}
//아닌 경우 num 지정
else {
break;
}
}
//max 지정
if(num > max) {
max = num;
}
//num 반환
return num;
}
}
-- OTHER WAY 3 💡 : ArrayList 사용한 풀이
public static void arrlist() {
Scanner sc = new Scanner(System.in);
ArrayList<Integer> alist = new ArrayList<Integer>();
///alist.size()
for (int i = 0; i < 3; i++) {
System.out.println("정수를 입력하세요.");
int a = sc.nextInt();
if (a >= 0 && a <= 30000) {
alist.add(a);
}
Collections.sort(alist);
}
if (alist.get(0) * alist.get(0) + alist.get(1) * alist.get(1)
== alist.get(2) * alist.get(2)) {
System.out.println("right");
} else {
System.out.println("wrong");
}
}
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 문자열 내림차순으로 배치하기 (0) | 2020.04.01 |
---|---|
[프로그래머스] 하샤드 수 (0) | 2020.03.31 |
[백준/JAVA] 1929 소수구하기 (0) | 2019.11.08 |
[백준/JAVA] 2581 소수 (0) | 2019.11.08 |