백준 15312 java : 구현

magicdrill·2025년 7월 7일

백준 문제풀이

목록 보기
632/673

백준 15312 java : 구현

list = temp; 구문?

중간에 list = temp;구문을 통해 list배열에 temp배열을 저장해 갱신한다.
이는 얕은 복사shallow copy로 참조를 바꾸기 때문에 기존 배열의 크기와는 상관이 없다.
또한 기존에 저장해서 메모리에 적재된 list의 데이터들은 메모리 누수의 원인이 될 수 있기 때문에 가비지컬렉터가 수행된다. 자바에서는 자동으로 사용하지 않는 데이터들을 메모리에서 삭제해준다.

import java.util.Scanner;

public class BJ15312 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        String A, B;
        int i;
        int []alphabet = {3, 2, 1, 2, 3, 3, 2, 3, 3, 2, 2, 1, 2, 2, 1, 2, 2, 2, 1, 2, 1, 1, 1, 2, 2, 1};

        A = sc.next();
        B = sc.next();

        int [] list = new int [A.length() + B.length()];
        for (i = 0; i < A.length(); i++) {
            list[2 * i] = alphabet[A.charAt(i) - 'A'];
            list[2 * i + 1] = alphabet[B.charAt(i) - 'A'];
        }

        for(int num : list){
            System.out.print(num + " ");
        }
        System.out.println();

        while(list.length > 2){
            int [] temp = new int [list.length - 1];

            for(i = 0; i < list.length - 1; i++){
                temp[i] = (list[i] + list[i + 1]) % 10;
            }

            list = temp;

            for(int num : list){
                System.out.print(num + " ");
            }
            System.out.println();
        }

        System.out.println(list[0] + "" + list[1]);
    }
}

0개의 댓글