반응형
4. 같은 값의 숫자가 나올경우를 고려
import java.util.Scanner;
public class App {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("정수 3개 입력>>");
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();
int num3 = scanner.nextInt();
int middle;
if(num1>=num2 && num1<=num3 || num1>=num3 && num1<=num2)
middle = num1;
else if(num2>=num1 && num2<=num3 || num2>=num3 && num2<=num1)
middle = num2;
else
middle = num3;
System.out.println("중간 값은 "+ middle);
scanner.close();
}
}
5. 배열에 3개의 변의 길이를 넣고, 오름차순으로 정렬하여 index 2에 max가 오게끔 한다.
import java.util.Scanner;
public class App {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("정수 3개를 입력하시오>>");
int sideArray[] = new int[3];
for(int i =0;i<sideArray.length;i++) {
sideArray[i] = scanner.nextInt();
}
java.util.Arrays.sort(sideArray);
int sumOf2Sides = sideArray[0] + sideArray[1];
if(sumOf2Sides>sideArray[2])
System.out.println("삼각형이 됩니다.");
else
System.out.println("삼각형이 안됩니다.");
scanner.close();
}
}
6. 십의 자리와 일의 자리가 각각 0이 아니면서 3의 배수인지 체크해서 맞으면 clapCount를 1증가시킨다.
import java.util.Scanner;
public class App {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("1~99 사이의 정수를 입력하시오>>");
int num = scanner.nextInt();
if (num>99 || num<1)
System.out.println("정수가 1~99 사이에 있지 않습니다.");
else {
int digitNumberOf10 = num/10;
int digitNumberOf1 = num % 10;
int clapCount = 0;
if(digitNumberOf10 != 0 && digitNumberOf10 % 3 == 0)
clapCount++;
if(digitNumberOf1 != 0 && digitNumberOf1 %3 == 0)
clapCount++;
if(clapCount == 2)
System.out.println("박수짝짝");
else if (clapCount == 1)
System.out.println("박수짝");
else
System.out.println();
}
scanner.close();
}
}
8. 두 직사각형이 겹치는 경우는 큰 직사각형에 작은 직사각형이 포함될때도 포함한다. 넓이가 공유되는 경우(색칠된 부분)은 직사각형이 겹치는 것이다.
import java.util.Scanner;
public class App {
public static boolean inRect(int x, int y, int rectx1, int recty1, int rectx2, int recty2) {
if ((x >= rectx1 && x <= rectx2) && (y >= recty1 && y <= recty2))
return true;
else
return false;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("직사각형의 왼쪽 아래 점 (x1,y1)과 직사각형의 오른쪽 위 점 (x2,y2)의 좌표를 입력하시오\n");
System.out.print("Point1>>");
int x1 = scanner.nextInt();
int y1 = scanner.nextInt();
System.out.print("Point2>>");
int x2 = scanner.nextInt();
int y2 = scanner.nextInt();
if (inRect(x1, y1, 100, 100, 200, 200) || inRect(x2, y2, 100, 100, 200, 200))
System.out.println("(100,100), (200,200)의 직사각형과 충돌합니다.");
else
System.out.println("(100,100), (200,200)의 직사각형과 충돌하지 않습니다.");
scanner.close();
}
}
10. 두 원이 서로 겹치는 경우: 두 원의 중심 사이의 거리 = d , 두 반지름의 합 rSum, 두 반지름의 차 = rDiff라 하면
rDiff <= d <= rSum인 경우이다. 원을 큰 원과 작은 원 2개를 그려서 안에서 접하는 경우, 바깥에서 접하는 경우를 그림으로 그려보면 이해하기 편하다. (아래 코드와 달리, 원의 내부를 색칠된걸로 가정하면, d <= rSum의 경우만 생각하면 된다.)
import java.util.Scanner;
public class App {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("첫번째 원의 중심과 반지름 입력>>");
double x1 = scanner.nextDouble();
double y1 = scanner.nextDouble();
double radius1 = scanner.nextDouble();
System.out.print("두번째 원의 중심과 반지름 입력>>");
double x2 = scanner.nextDouble();
double y2 = scanner.nextDouble();
double radius2 = scanner.nextDouble();
double distance = Math.sqrt(Math.pow(x1-x2, 2) + Math.pow(y1-y2,2));
double radiusDiff = Math.abs(radius1 - radius2);
double radiusSum = radius1 + radius2;
if(distance>= radiusDiff && distance <= radiusSum )
System.out.println("두 원은 서로 겹친다.");
else
System.out.println("두 원은 서로 겹치지 않는다.");
scanner.close();
}
}
반응형
댓글