Myo-Kyeong Tech Blog

[프로그래머스] Lv.0 글자 지우기 (Python / Java) 본문

프로그래머스

[프로그래머스] Lv.0 글자 지우기 (Python / Java)

myo-kyeong 2023. 7. 16. 01:38
728x90
반응형

 

코딩테스트 연습 - 글자 지우기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

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

programmers.co.kr

 

문제 설명

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

제한 사항

  • 1 ≤ indices의 길이 < my_string의 길이 ≤ 100
  • my_string은 영소문자로만 이루어져 있습니다
  • 0 ≤ indices의 원소 < my_string의 길이
  • indices의 원소는 모두 서로 다릅니다.

입출력 예

 


문제 풀이

[Python]

def solution(my_string, indices):    
    return ''.join([my_string[i] for i in range(len(my_string)) if i not in indices])

 

[Java]

HashSet의 contains 메소드는 해시 함수를 이용하여 특정 요소의 존재 여부를 바로 확인할 수 있어 시간 복잡도가 평균적으로 O(1)이므로 특정 인덱스가 indices에 포함되어 있는지를 빠르게 확인할 수 있어 HashSet을 사용하였다.

import java.util.*;

class Solution {
    public String solution(String my_string, int[] indices) {
        HashSet<Integer> indexSet = new HashSet<>();
        for (int index : indices) {
            indexSet.add(index);
        }
        
        StringBuilder answer = new StringBuilder();
        for (int i = 0; i < my_string.length(); i++) {
            if(!indexSet.contains(i)) {
                answer.append(my_string.charAt(i));
            }
        }
        return answer.toString();
    }
}
728x90
반응형