✎NHN Academy | JAVA

NHN Academy - 2024.08.23(Fri)

박순돌 2024. 8. 23. 14:05

Module 06 배열

오늘의 시작 문제!! - Algorithm.java 작성하기(Algorithm.java + Adder.java + Multiplier.java)

public class Algorithm {
    // static final int addFrom1to10 = 55;

    public static int addFrom1to10() {
        int sum = 0;
        for(int i = 0; i <= 10; i++) {
            sum += i;
        }
        return sum;
    }
    public static int sigma(int start, int end, int step) {
        return accumulate(new Adder(), 0, start, end, step);
    }
    public static int pi(int start, int end, int step) {
        return accumulate(new Multiplier(), 1, start, end, step);
    }
    public static int accumulate(Adder binder, int init, int start, int end, int step) {
        int result = init;

        for(int i = start; i <= end; i+=step) {
            result = binder.apply(result, i);
        }
        return result;
    }
    public static int accumulate(Multiplier binder, int init, int start, int end, int step) {
        int result = init;

        for(int i = start; i <= end; i += step) {
            result = binder.times(result, i);
        }
        return result;
    }

    public static void main(String[] args) {
        System.out.println(addFrom1to10());
        System.out.println(sigma(1, 10, 1));
        System.out.println(pi(1, 10, 1));
    }
}

 

2차원 배열 => type[][]

3차원 배열 => type[][][]

 

index는 0부터 시작한다***

 

배열은 3가지 방법으로 생성 가능 O

 

배열 생성 시,

1. new 키워드를 사용하여 배열 인스턴스를 생성

2. 배열 인스턴스를 생성할 때 모든 차원의 배열 크기를 지정

3. Java 컴파일러는 암시적으로 각 배열 요소를 배열 요소 유형에 따라 기본값으로 초기화

 

Java의 배열  =  배열의 크기를 표시하는 length 만 가짐

length  =  읽기 전용 정수값, 배열에 포함된 요소의 크기

다차원 배열 in Java  =  부모 배열이 자식 배열을 포함하고 있는 형태

                                 =  배열의 length 값은 배열에 “포함된” 요소의 수를 나타냄

 

foreach 문 : 배열 처리를 위한 상세 작업을 추상화 함

 


 

Lab 6-1 : 배열의 생성과 사용

// Tictactoe.java

import java.util.*;

public class Tictactoe {
    public static void printGame(String[][] arr){
        System.out.println();
        //System.out.println("----------------");
        for (int i = 0; i < 3; i++) {
			System.out.println("  " + arr[i][0] + "|  " + arr[i][1] + "|  " + arr[i][2]); 
			
			if (i != 2) {
				System.out.println("-----------");
			}               
		}
    }

    public static void userPick(String[][] arr, int x, int y){
        arr[x][y] = "O";
    }

    public static void computerPick(String[][] arr){
        Random random = new Random();

        while(true){
            int x = random.nextInt(3);
            int y = random.nextInt(3);
            if(arr[x][y] == " "){
                arr[x][y] = "X";
                break;
            }
            if(gameIsFull(arr) == true){
                break;
            }
        }
    }

    public static String gameWinner(String[][] arr){

        for(int i = 0; i < arr.length; i++){
            if(arr[i][0] == arr[i][1] && arr[i][1] == arr[i][2] && arr[i][0] != " " ){
                return arr[i][0];
            }
            if(arr[0][i] == arr[1][i] && arr[1][i] == arr[2][i] && arr[0][i] != " " ){
                return arr[0][i];
            }
        }

        if(arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2] && arr[0][0] != " "){
            return arr[0][0];
        }

        if(arr[0][2] == arr[1][1] && arr[1][1] == arr[2][0] && arr[0][2] != " "){
            return arr[0][2];
        }

        return "";
    }

    public static boolean gameIsFull(String[][] arr){

        for(int i =0; i<arr.length; i++){
            for(int j=0; j<arr.length; j++){
                if(arr[i][j] == " "){
                    return false;
                }
            }            
        }
        return true;
    } 

    public static void main(String[] args){

        Scanner sc = new Scanner(System.in);


        String[][] arr = new String[3][3];

        for(int i = 0; i < arr.length; i++){
            for(int j = 0; j < arr.length; j++){
                arr[i][j] = " ";
            }
        }

        printGame(arr);
        System.out.println();

        boolean gameEnd = true;
        while(gameEnd){
            System.out.println("선택할 좌표(x, y)를 입력해 주세요.");
            int x = sc.nextInt();
            int y = sc.nextInt();
            if(arr[x][y] != " "){
                System.out.println("중복된 자리입니다.");
                continue;
            }
            userPick(arr, x, y);
            computerPick(arr);
            printGame(arr);

            String winner = gameWinner(arr);

            if(winner.equals("O")) {
                System.out.println("축하합니다. 게임에서 승리하였습니다!");
                gameEnd = false;
            }
			else if(winner.equals("X")) {
                System.out.println("아쉽게 게임에서 패배하였습니다.");
                gameEnd = false;
            }
            else if(gameIsFull(arr) == true) {
                System.out.println("비겼습니다");
                gameEnd = false;
            }
        }
		sc.close();
    }
}

'✎NHN Academy | JAVA' 카테고리의 다른 글

NHN Academy - 2024.08.27(Tue)  (0) 2024.08.27
NHN Academy - 2024.08.26(Mon)  (0) 2024.08.26
NHN Academy - 2024.08.22(Thu)  (0) 2024.08.22
NHN Academy - 2024.08.21(Wed)  (0) 2024.08.21
NHN Academy - 2024.08.20(Tue)  (0) 2024.08.20