본문 바로가기

Java/프로그래머스

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

https://school.programmers.co.kr/learn/courses/30/lessons/181900

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

delete() 메소드 

 

[JAVA] delete() - 문자열의 일부분을 제거하는 메소드 (tistory.com)

 

[JAVA] delete() - 문자열의 일부분을 제거하는 메소드

delete() 메소드 - 인덱스의 값을 기준으로 부분 문자열을 문자열에서 제거합니다. - 특정 위치의 문자열 중 문자 한 개만을 제거하고 싶을 때는 deleteCharAt() 메소드를 사용하면 됩니다. - delete(), dele

itprogramming119.tistory.com

 

- 인덱스의 값을 기준으로 부분 문자열을 문자열에서 제거 

- 특정 위치의 문자열 중 문자 한 개만을 제거하고 싶을 때는 deleteCharAt() 메소드를 사용하면 됨

- delete(), deleteCharAt() 메소드를 사용하기 위해서는 StringBuffer 클래스를 임포트 해야 함 

 

public class Main{
    public static void main(String args[]) {
        StringBuffer str = new StringBuffer("Java Oracle");
        System.out.println("원본 문자열 : " + str);
        System.out.println(str.delete(4, 8));
        System.out.println("delete() 메소드를 한 후 문자열 : " + str);
        System.out.println(str.deleteCharAt(1));
        System.out.println("deleteCharAt() 메소드까지 사용하고 난 후의 문자열 : " + str);
    }
}
출처: https://itprogramming119.tistory.com/entry/JAVA-40-문자열에서-부분-문자열을-제거하는-delete-메소드-StringBuffer-클래스 [코딩병원:티스토리]

 

 

정답 

 

import java.util.Arrays;

class Solution {
    public String solution(String my_string, int[] indices) {
        StringBuilder sb = new StringBuilder(my_string);
        
        // 인덱스 배열을 내림차순으로 정렬하여, 뒤에서부터 제거할 문자를 처리
        Arrays.sort(indices);
        for (int i = indices.length - 1; i >= 0; i--) {
            int index = indices[i];
            sb.deleteCharAt(index);
        }
        
        return sb.toString();
    }
}

 

 

다른 사람의 풀이 

 

class Solution {
    public String solution(String my_string, int[] indices) {
        char[] arr = my_string.toCharArray();
        for(int i : indices) {
            arr[i] = ' ';
        }
        StringBuilder sb=  new StringBuilder();
        for(int i=0; i<arr.length; i++) {
            if(arr[i] != ' ') {
                sb.append(arr[i]);
            }
        }
        return sb.toString();
    }
}