프로그래머스 글자 지우기

KIMYEONGJUN·2026년 6월 9일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

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

내가 이 문제를 보고 생각해본 부분

solution 메서드는 my_string과 삭제해야 할 인덱스 배열 indices를 매개변수로 받는다.
먼저 삭제할 인덱스들을 저장하기 위해 HashSet<Integer> 타입의 removeSet을 생성한다.
반복문을 사용해서 indices 배열 내부의 모든 인덱스 값을 removeSet에 넣는다. 이렇게 하면 삭제 대상 인덱스를 빠르게 확인할 수 있다.
빈 StringBuilder answer를 만들어서 결과 문자열을 저장할 준비를 한다.
my_string의 각 문자 위치 i를 순회하면서, 만약 removeSet에 현재 인덱스가 포함되어 있지 않으면 그 문자를 answer에 추가한다. 포함되어 있으면 해당 문자를 건너뛴다.
모든 문자를 확인한 후 answer에 모아진 문자열을 toString()으로 변환하여 반환한다.

코드로 구현

import java.util.HashSet;
import java.util.Set;

class Solution {
    public String solution(String my_string, int[] indices) {
        Set<Integer> removeSet = new HashSet<>();
        for (int idx : indices) {
            removeSet.add(idx);
        }
        
        StringBuilder answer = new StringBuilder();
        for (int i = 0; i < my_string.length(); i++) {
            if (!removeSet.contains(i)) {
                answer.append(my_string.charAt(i));
            }
        }
        
        return answer.toString();
    }
}

프로그래머스 코드

package programmers;

import java.util.HashSet;
import java.util.Set;

// 프로그래머스 글자 지우기
public class Main45 {
    public static void main(String[] args) {
        Main45 sol = new Main45();

        String my_string = "apporoograpemmemprs";
        int[] indices = {1, 16, 6, 15, 0, 10, 11, 3};

        String result = sol.solution(my_string, indices);
        System.out.println(result);  // 출력: programmers
    }

    public String solution(String my_string, int[] indices) {
        Set<Integer> removeSet = new HashSet<>();
        for (int idx : indices) {
            removeSet.add(idx);
        }

        StringBuilder answer = new StringBuilder();
        for (int i = 0; i < my_string.length(); i++) {
            if (!removeSet.contains(i)) {
                answer.append(my_string.charAt(i));
            }
        }

        return answer.toString();
    }
}

위에 있는 코드를 변경한 코드

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글