[백준][Java] 29729. 가변 배열

2025. 1. 9. 15:26·Algorithms(CT)/Baekjoon

https://www.acmicpc.net/problem/29729

문제

가별 배열 : 고정된 크기로 배열 선언한 후, 선언한 배열의 크기가 부족할 경우 배열의 크기를 자동으로 늘려준다.

가변 배열의 작동 원리

  1. 초기 크기를 원하는 만큼 지정하여 가변 배열을 생성한다. (초기는 비어있는 상태)
  2. 원소를 저장해야 하는데 가변 배열이 꽉 차 있는 경우, 현재 가변 배열의 크기를 2배에 해당하는 새로운 가변 배열을 선언.
  3. 새로 생성한 2배 크기의 가변 배열의 맨 앞에 기존 가변 배열에 있는 원소를 모두 복사한 후, 기존 가변 배열을 지우고 새로운 가변 배열로 대체한다. 이후 2번에서 저장하려고 했던 원소를 그 뒤에 저장한다.

 

 

다음은 그림으로 이걸 설명한 자료입니다!

이 설명을 참고하여 가변 배열의 초기 크기와, 일련의 원소 저장/삭제 명령이 주어졌을 때,

명령들을 모두 수행한 후 가변 배열의 현재 크기를 출력해주세요.

 


 

정답 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] s = br.readLine().split(" ");

        int initialSize = Integer.parseInt(s[0]);
        int N = Integer.parseInt(s[1]); // 저장 명령 개수
        N += Integer.parseInt(s[2]); // 삭제 명령 개수

        int size = initialSize;
        int curSize = 0;

        while(N-- >0) {
            int command = Integer.parseInt(br.readLine());

            if(command == 1) { // 저장
                if(curSize+1>size){
                    size *= 2;
                }
                curSize++;
            } else { // 삭제
                curSize--;
            }
        }

        System.out.println(size);
    }
}

 

 

풀이 설명

가변 배열에 대한 이해만 확실하다면 주어진 명령 순서대로 크기를 늘려주기만 하면 됩니다.

현재 가변 배열의 크기를 size라고 두고, 채워진 칸 수를 curSize로 선언합니다.

현재 배열이 다 채워진 상태(size==curSize)일 때, 수를 추가하려고 하면, 가변 배열의 크기를 2배로(size x 2) 늘립니다.

'Algorithms(CT) > Baekjoon' 카테고리의 다른 글

[백준][Java] 1015. 수열 정렬  (0) 2025.01.09
[백준] 14719. 빗물 (자바)  (1) 2023.09.27
[백준] 1541. 잃어버린 괄호 (Java)  (0) 2023.08.03
[백준] 2457. 공주님의 정원 (Java)  (0) 2023.08.01
[백준] 2606. 바이러스 (java)  (0) 2023.07.18
'Algorithms(CT)/Baekjoon' 카테고리의 다른 글
  • [백준][Java] 1015. 수열 정렬
  • [백준] 14719. 빗물 (자바)
  • [백준] 1541. 잃어버린 괄호 (Java)
  • [백준] 2457. 공주님의 정원 (Java)
gwee_99
gwee_99
bE bETTER!
  • gwee_99
    얼렁이와 뚱땅이
    gwee_99
  • 전체
    오늘
    어제
    • ====Category====
      • Algorithms(CT)
        • Programmers
        • Baekjoon
        • Goorm
      • Web
        • Error 해결
      • BackEnd
        • Spring
        • JPA
      • FrontEnd
        • HTML.CSS
        • JavaScript
      • Language
        • Java
      • Cloud
      • CSTS
      • Books
        • IT 5분 잡학사전
      • 일상
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
    • 관리
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    그리디
    java
    LV.3
    Til
    Lv.1
    IT 잡학사전
    Greedy
    BOJ
    lv.4
    DFS
    제대로 파는 자바스크립트
    구름
    BFS
    lv2
    스택
    인프런
    구름톤 챌린지
    DP
    개발자북클럽
    노마드코더
    백준
    HTML
    프로그래머스
    코딩테스트
    따라하며 배우는 html css
    존안님
    IT 5분 잡학사전
    자바
    LV.2
    호텔 대실
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
gwee_99
[백준][Java] 29729. 가변 배열
상단으로

티스토리툴바