배열(Array) 섹션 - (1)

728x90

📍 섹션2. Array(1, 2차원 배열) 섹션

배열(Array) 섹션 - (1)

2-1. 큰 수 출력하기

  • 첫 번째 수는 반드시 출력할 것. + 앞수보다 크면 answer에 이어붙임
import java.util.ArrayList;
import java.util.Scanner;

/* 2-1. 큰 수 출력하기
 * 설명
    N개의 정수를 입력받아, '자신의 바로 앞 수'보다 큰 수만 출력하는 프로그램을 작성하세요.
    (첫 번째 수는 무조건 출력한다)
 * */
public class Main1 {

    //솔루션 함수 
    public ArrayList<Integer> solution(int n, int[] arr) {
        ArrayList<Integer> answer = new ArrayList<>();

        answer.add(arr[0]); //첫수 무조건 넣기
        //현재 수가 바로 앞수보다 크면 answer에 붙임
        for(int i = 1; i<n; i++) {
            if(arr[i] > arr[i-1]) answer.add(arr[i]);
        }

        return answer;
    }

    //실행 메인 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Main1 T = new Main1();

        Scanner kb = new Scanner(System.in);
        //1) 입력 N
        int n = kb.nextInt();
        //2) N개 숫자 입력 
        int[] arr = new int[n];
        for(int i = 0; i<n; i++) {
            arr[i] = kb.nextInt();
        }

        //출력
        for(int x: T.solution(n, arr)) {
            System.out.print(x + " ");
        }
    }
}

2-2. 보이는 학생

  • 최댓값 M 를 갱신하는 방식으로 풀자
import java.util.Scanner;

/*  2-1. 보이는 학생 
 *  [설명]
    선생님이 N명의 학생을 일렬로 세웠습니다. 
    일렬로 서 있는 학생의 키가 앞에서부터 순서대로 주어질 때, 
    맨 앞에 서 있는 선생님이 볼 수 있는 학생의 수를 구하는 프로그램을 작성하세요. 
    (앞에 서 있는 사람들보다 크면 보이고, 작거나 같으면 보이지 않습니다.)

 * */
public class Main2 {

    //솔루션 함수 
    public int solution(int n, int[] arr) {
        int answer = 1;

        int M = arr[0]; //첫 학생 무조건 초기화
        for(int i =0; i<n; i++) {
            if(arr[i] > M) {
                answer+=1;
                M = arr[i];
            }
        }
        return answer;
    }
    //실행 메인 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Main2 T = new Main2();

        //입력
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();
        int[] arr = new int[n];

        for(int i =0 ; i<n; i++) {
            arr[i] = kb.nextInt();
        }

        //출력
        System.out.println(T.solution(n, arr));        
    }
}

2-3. 가위바위 보

  • A를 기준으로 경우의 수를 나눠서 생각하자.
/* 2-3. 가위바위보
 *  설명 : A, B 두 사람이 가위바위보 게임을 합니다. 
총 N번의 게임을 하여 A가 이기면 A를 출력하고, B가 이기면 B를 출력합니다. 비길 경우에는 D를 출력합니다.
    가위, 바위, 보의 정보는 1:가위, 2:바위, 3:보로 정하겠습니다.
    두 사람의 각 회의 가위, 바위, 보 정보가 주어지면 각 회를 누가 이겼는지 출력하는 프로그램을 작성하세요. */

public class Main3 {

    //솔루션 함수 
    public String solution (int n, int[] a, int[] b) {
        String answer = "";

        for(int i = 0; i<n; i++) {
            //비김
            if(a[i] == b[i]) answer += "D"; 
            //이김
            else if(a[i] == 1 && b[i] == 3) answer += "A";
            else if(a[i] == 2 && b[i] == 1) answer += "A";
            else if(a[i] == 3 && b[i] == 2) answer += "A";
            //짐
            else answer += "B";
        }

        return answer;
    }

    //실행 메인 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Main3 T = new Main3();
        Scanner kb = new Scanner(System.in);
        //입력 
        int n = kb.nextInt();
        int[] arr1 = new int[n];
        int[] arr2 = new int[n];

        for(int i =0 ;i<n; i++) {
            arr1[i] = kb.nextInt();
        }
        for(int i = 0; i<n; i++) {
            arr2[i] = kb.nextInt();
        }

        //출력
        for(char x: T.solution(n, arr1, arr2).toCharArray() ) {
            System.out.println(x);
        }
    }
}

2-4. 피보나치 수열

(1) 배열 사용한 풀이

import java.util.Scanner;

/* 2-4. 피보나치 수열 
 *  1) 피보나키 수열을 출력한다. 피보나치 수열이란 앞의 2개의 수를 합하여 다음 숫자가 되는 수열이다.
    2) 입력은 피보나치 수열의 총 항의 수 이다. 만약 7이 입력되면 1 1 2 3 5 8 13을 출력하면 된다.
 * */
public class Main4 {
    //솔루션 함수 
    public int[] solution (int n) {
        int[] answer = new int[n];
        //초기화 a1, a2 = 1
        answer[0] = 1; answer[1] = 1;

        for(int i = 2; i<n; i++) {
            answer[i] = answer[i-2] + answer[i-1];
        }
        return answer;
    }
    //실행 메인 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Main4 T = new Main4();
        Scanner kb = new Scanner(System.in);
        //입력
        int n = kb.nextInt();
        //출력
        for(int x : T.solution(n) ) System.out.print(x + " ");
    }
}

(2) 배열 없이 풀이

public class Main5 {    
    public void solution(int n) {
        int a = 1, b =1, c;
        System.out.print(a + " " + b + " ");
        for(int i =2; i<n; i++) {
            c = a+b;
            System.out.print(c + " ");
            //갱신되어야 수열 생성됨
            a = b;
            b = c;
        }
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Main5 T = new Main5();
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();
        T.solution(n);
    }
}
728x90