Algorithm/JAVA

[자바/JAVA] 피보나치 함수, 배열 반복 일치 검사, 사각형의 둘레와 넓이 구하기

바오밥 하단 2020. 4. 30. 01:10

C랑 문법은 다르지만 과제는 크게 다르지 않아서 편하게 하는 중.

 

1. 피보나치 함수

원하는 숫자를 입력받아 피보나치 숫자를 출력하는 함수이다.

피보나치 제발 그만 하고 싶다.

툭 하면 피보나치. 새로움을 보였으면.

 

package practice2;

import java.util.Scanner;

public class fibo {

    //피보나치 함수: 양수면 피보나치 수를 return, 0이거나 음수면 -1을 return

    static int fibonacci(int n) {

        int f1 = 0;

        int f0 = 1;

        if (n <= 0)

            return -1;

        else {

            for (int i = 0; i < n; i++) {

                int temp = f1;

                f1 = f0;

                f0 = temp + f0;

            }

            return f1;

        }

    }

    public static void main(String args[]) {

        Scanner scin = new Scanner(System.in);

        System.out.print("Enter n : ");

        int n = scin.nextInt();

        int result = fibonacci(n);

        //출력

        if (result == -1)

            System.out.println("Should enter a positive number");

        else

            System.out.printf("fibonacci(%d) = %d", n, result);    

        scin.close();

    }

}C

cs

 

 

 

2. 배열 반복 일치 검사

 

B의 배열이 A의 배열의 반복인지 알아보는 함수이다.

B의 길이는 A의 길이의 배수가 되어야한다.

 

 

package practice2;

public class P2_2 {

    

    static boolean checkRepetition(int[] a, int[] b) {

        int a_n = a.length;

        int b_n = b.length;

        if(b_n%a_n != 0) return false;

        else {

            for(int i=0;i<a_n;i++) {

                for(int j=i;j<b_n;j+=a_n) {

                    if (a[i]==b[j])

                        continue;

                    else return false;

                }

            }

            return true;

        }

    }

    public static void main(String[] args) {

        int[] x1 = { 2, 1 };

        int[] x2 = { 2, 1, 2, 1, 2, 1 };

        System.out.println("x1 and x2 : " + checkRepetition(x1, x2));

        

        int[] x3 = { 1, 2, 3 };

        int[] x4 = { 1, 2, 3, 1, 2, 3, 1 };

        System.out.println("x3 and x4 : " + checkRepetition(x3, x4));

        

        int[] x5 = { 5 };

        int[] x6 = { 5, 5, 5, 5, 5, 5 };

        System.out.println("x5 and x6 : " + checkRepetition(x5, x6));

        

        int[] x7 = { 1, 3, 5, 7, 9 };

        int[] x8 = { 1, 3, 5, 7, 9 };

        System.out.println("x7 and x8 : " + checkRepetition(x7, x8));

        

        int[] x9 = { 2, 3 };

        int[] x10 = { 2, 3, 4, 2, 3 };

        System.out.println("x9 and x10 : " + checkRepetition(x9, x10));

    }

}

Colored by Color Scripter

cs

 

 

3. 사각형의 둘레와 넓이 구하기

 

 

package practice2;

class Rectangle {

    int width;

    int height;

    Rectangle() {

    }

    Rectangle(int w, int h) {

        width = w;

        height = h;

    }

    // main 메소드를 보고 다음의 Rectangle 클래스의 메소드들을 완성한다.

    void setWidthHeight(int w, int h) {

        this.width = w;

        this.height = h;

    }

    void printInfo() {

        System.out.println("width : " + width + ", height : " + height);

    }

    int getArea() {

        return width * height;

    }

    int getPerimeter() {

        return (width + height) * 2;

    }

    void incWidth(int n) {

        this.width += n;

    }

    void incHeight(int n) {

        this.height += n;

    }

}

public class P2_3 {

    public static void main(String[] args) {

        Rectangle r1 = new Rectangle(5, 6);

        Rectangle r2 = new Rectangle();

        r2.setWidthHeight(7, 9); // 인스턴스 r2의 필드 width를 7로, height를 9로 저장한다.

        r1.printInfo(); // 인스턴스 r1의 width, height를 출력한다.

        System.out.println("r1의 넓이 : " + r1.getArea() + ", r1의 둘레 :" + r1.getPerimeter());

        r2.incWidth(3); // r2의 width를 3 증가시킨다. 즉, 10으로만든다.

        r2.incHeight(10); // r2의 height를 10만큼 증가시킨다. 즉, 19로 만든다.

        r2.printInfo(); // 인스턴스 r2의 width, height를 출력한다.

        System.out.println("r2의 넓이 : " + r2.getArea() + ", r2의 둘레 : " + r2.getPerimeter());

    }

}

Colored by Color Scripter

cs