[프로그래머스][JAVA] 글자 지우기

Boknami·2023년 7월 19일
0

프로그래머스

목록 보기
3/29

문자열 my_string과 정수 배열 indices가 주어질 때, my_string에서 indices의 원소에 해당하는 인덱스의 글자를 지우고 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.

블로그 기록 이유

Level 0 문제 중에 가장 오래 헤매었다.

실패와 오류 분석

단순 값 제거

처음에는 단순하게 indices에 있는 배열에 순서대로 접근해서 remove하는 형식으로 진행하였다. 이 문제의 가장 큰 문제는 내가 값들을 지워갈수록 동적으로 할당된 리스트는 인덱스의 변경이 일어난다. 예를 들어..

HELLO 에서 내가 3번째,5번째 인덱스를 지우고 싶다면
대충 L 제거 후 O가 제거될 것이다.

그런데 리스트는 알아서 크기가 조정되어 가니까 3번째 인덱스를 지우고 난 후면
HELO 상태이고 그 상태에서 5번째 인덱스를 지워버리면? 인덱스 범위가 넘어가서 오류를 일으킨다..

코드

import java.util.*;

class Solution {
    public String solution(String my_string, int[] indices) {
        String answer = "";
        
        // 1. my_string을 쉽게 접근할 수 있도록 문자열을 배열로
        String[] tmp = my_string.split("");
        
        //2. indices를 돌면서 지워야 할 값들을 비워둔다.
        for (int i = 0; i < indices.length; i++) {
            tmp[indices[i]] = "";
        }

        //3. 문자열을 하나로 합친다(빈 공간은 붙어도 어짜피 포함X, 단순 "")
        for (String x : tmp) {
            answer += x;
        }
        return answer;
    }
}

0개의 댓글

관련 채용 정보