import java.util.Scanner;
public class 과제0701 {
//과제1]
private static int Facto(int num) {
int fac = 1;
int sum = 0;
for(int i=1;i<=num;i++) {
fac = fac*i; //반복횟수 10번
sum+=fac; // 누적변수
System.out.println(sum); //4037913
}
return sum;
}
//과제2]
public void Absol(int x, int y) {
Scanner sc = new Scanner(System.in);
System.out.println("첫번째 수를 입력하세요.");
int su = sc.nextInt();
System.out.println("두번째 수를 입력하세요.");
int su2 = sc.nextInt();
if(su>0 && su2>0) {
System.out.println("입력하신 수의 절대값은 = " + su + "입니다.");
System.out.println("입력하신 수의 절대값은 = " + su2 + "입니다.");
}else if(su>0 && su2<0) {
System.out.println("입력하신 수의 절대값은 = " + su + "입니다.");
System.out.println("입력하신 수의 절대값은 = " + su2*(-1) + "입니다.");
}else if(su<0 && su2>0) {
System.out.println("입력하신 수의 절대값은 = " + su*(-1) + "입니다.");
System.out.println("입력하신 수의 절대값은 = " + su2 + "입니다.");
}else if(su<0 && su2<0) {
System.out.println("입력하신 수의 절대값은 = " + su*(-1) + "입니다.");
System.out.println("입력하신 수의 절대값은 = " + su2*(-1) + "입니다.");
}else if(su==0 && su2==0){
System.out.println("입력하신 수의 절대값은 = 0입니다.");
}
}
//강사님 풀이
public static int abs(int num1, int num2) { //가인수
if(num1>num2) return num1-num2;
else return num2-num1;
}
//과제4]
public static int GongAk(int x, int y) {
Scanner sc = new Scanner(System.in);
System.out.println("첫번째 수를 입력하세요.");
int ga = sc.nextInt();
System.out.println("두번째 수를 입력하세요.");
int gb = sc.nextInt();
int r = 1;
while(r>0) {
r = ga%gb;
ga = gb;
gb = r;
}
return ga;
}
//강사님 풀이(GCM공식사용)
public static int GongAk(int x, int y) {
int num1 = x, num2=y;
int total = 0;
int max = num1;
int min = num2;
if(num1<num2) {
max=num2;
min=num1;
}
for(int i=1; i<=min;i++) {
if(num1%1==0 && num2%i==0) {
total+=i;
}
}
return total;
}
//과제5]
public static void Star(int x, int y, int z) {
int i, j, k;//지역변수, 메인 메소드 안에 들어있음.
for(i=1; i<=5; i++) {
for(j=0; j<=4-i; j++) {
System.out.print(" ");
}for(k=1; k<=2*i-1; k++) {
System.out.print("*");
}System.out.println();
}for(i=4; i>=1; i--) {
for(j=0; j<=4-i; j++) {
System.out.print(" ");
}for(k=1; k<=2*i-1; k++) {
System.out.print("*");
}System.out.println();
}
}
//강사님풀이
public static void Diamond(int n) {
printStarIncrement(5);
printStarDecrement(5);
}
public static void printStarIncrement(int n) {
for(int i=n-1; i>=0; i--) { // 4>=0, 3>=0, 2>=0, 1>=0, 0>=0
for(int j=0; j<i; j++) { // 0<4, 1<0, 2<0, 3<0, 4<0
System.out.print(" "); //바깥쪽 blank(공백 = null) 출력
}
for(int k=1; k<2*(n-i); k++) { // 1<2*(5-4) = 1 <2 => * 1번 찍는다.
System.out.print("*");
}
System.out.println();
}
}
public static void printStarDecrement(int n) {
for(int i = 1; i<n; i++) { //1 <5, 2<5, 3<5, 4<5
for(int j=0; j<i; j++) { // 0<1
System.out.print(" ");
}
for(int k=1; k<2*(n-i); k++) { // 1<2*(5-1) => * 7번 찍는다.
System.out.print("*");
}
System.out.println();
}
}
@SuppressWarnings("static-access")
public static void main(String[] args) {
//과제1] 10! 팩토리얼을 구하여 합계를 출력하세요. 단, 메소드이용하여.
Facto(10);
//과제2] 두 수를 입력하여 절대값을 구하는 프로그램 작성. 단, 메소드 이용하여.
int x=0, y = 0;
과제0701 gj = new 과제0701();
gj.Absol(x, y);
//강사님 풀이
System.out.println(abs(10, 5)); //실인수, 5
System.out.println(abs(5, 10));
System.out.println(abs(-10, -5));
System.out.println(abs(-5, -10));
System.out.println(abs(10, -5));
//과제3] 클래스와 객체와 메소드의 관계를 설명하세요.
// 클래스는 필드(데이터)와 메소드(처리동작)가 합쳐진 객체의 집합이다.
/* class : 객체를 생성하여 만들기 위한 기준(틀)
* object : 클래스에 생성한 인스턴스(= 참조변수, 객체, reference)
* method : 기능, 동작, 행위
*
* 1. 접근 제어자 : 해당 메소드에 접근할 수 있는 범위를 명시합니다.
* - 종류 : public, protected, default(접근제어지시자가 없는경우:생략), private
* - public : 공개적인, 누구나 접근이 가능합니다. => 정보의 은닉성을 해칩니다.
* - protected : 상속관계에 있는 객체는 접근이 가능합니다.
* - default : 같은 패키지로 된 프로그램에서 사용할때 접근이 가능합니다. ex) void Hello() -> void 앞에 아무것도 없는경우.
* - private : 가장 좁은 범위의 접근을 허용합니다.
* 2. 반환 타입(return type) : 메소드가 모든 작업을 마치고 반환하는 데이터의 타입을 명시합니다.
* - String, int, void, float, double, <T>...
* 3. 메소드 이름 : 메소드를 호출하기 위한 이름을 명시합니다.
* 4. 매개변수 목록(parameters) : 메소드 호출 시에 전달되는 인수의 값을 저장할 변수들을 명시합니다.
* 5. 구현부(Impl) : 메소드의 고유 기능을 수행하는 명령문의 집합입니다.
*/
//과제4] 두 수의 최대 공약수를 구하여 출력하세요.(내부처리, 외부처리 각각 할것)
과제0701 mg = new 과제0701(); // 클래스 객체명 = new 클래스
int x = 0, y=0;
System.out.println("두 수의 최대 공약수 내부처리의 합계는 = " + mg.GongAk(x, y)); // 객체명.메소드명(인자값)
과제0701ms ms = new 과제0701ms(); // 클래스 객체명 = new 클래스
int x = 0, y=0;
System.out.println("두 수의 최대 공약수 외부처리의 합계는 = " + ms.과제0701ms(x, y)); // 객체명.메소드명(인자값)
//강사님 풀이(GCM공식사용)
과제0701 t = new 과제0701();
Scanner sc = new Scanner(System.in);
System.out.println("첫번째 수를 입력하세요.");
int n1 = sc.nextInt();
System.out.println("두번째 수를 입력하세요.");
int n2 = sc.nextInt();
int total = t.GongAk(n1,n2);
System.out.println(n1 + "과" + n2 +"의 공약수들의 합은 = " + total);
System.out.println("최대공약수들의 합은" + t.GongAk(n1,n2));
//과제5] 메소드를 이용하여 다이아몬드 테이블을 만들어 출력합니다. (반복문 활용)
// *
// ***
// *****
// *******
// *********
// *******
// *****
// ***
// *
// 오른편 공백은 찍을 필요가 없다!
int x = 0, y=0, z=0;
Star(1, 0, 1);
//강사님풀이
Diamond(5);
}
}
-----------------------------------------------------------
import java.util.Scanner;
public class 과제0701ms {
public static int 과제0701ms(int n1, int n2) {
Scanner sc = new Scanner(System.in);
System.out.println("첫번째 수를 입력하세요.");
int ga = sc.nextInt();
System.out.println("두번째 수를 입력하세요.");
int gb = sc.nextInt();
int r = 1;
while(r>0) {
r = ga%gb;
ga = gb;
gb = r;
}
return ga;
}
}