https://school.programmers.co.kr/learn/courses/30/lessons/181900
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
Algorithm
- Arrays.sort()로 배열을 오름차순 정렬, j를 indices의 pointer로 선언한다.
- my_string을 돌며 각 문자마다 j 인덱스 범위가 초과되지않고, 문자 인덱스 i가 j와 같다면 해당문자를 건너뛴다. (j++)
- 만약 위의 경우가 아니라면, ans에 문자를 추가한다.
cf) 내림차순 정렬 (JAVA)
Arrays.sort(arr, Collections.reverseOrder());
※ 유의점
`if(i == indices[j] && j < indices.length)`로 써서 Index 범위 초과 에러가 떴다.
`if(j < indices.length && i == indices[j])`처럼 범위를 먼저 체크하도록 순서를 유의하자.
Python
def solution(my_string, indices):
answer = ''
for i in range(len(my_string)):
if i not in indices:answer+=my_string[i]
return answer
Java
import java.util.*;
class Solution {
public String solution(String my_string, int[] indices) {
String answer = "";
int j=0;
Arrays.sort(indices);
for(int i=0;i<my_string.length();i++){
if(j<indices.length && i==indices[j] ){
j++;
}else{
answer += my_string.charAt(i);
}
}
return answer;
}
}
+) 다른 풀이
class Solution {
public String solution(String my_string, int[] indices) {
String answer = "";
String[] tmp = my_string.split(""); //문자열 각 문자를 배열요소로 저장
for (int i = 0; i < indices.length; i++) {
tmp[indices[i]] = ""; // 빈문자열로 변경.해당 문자 삭제
}
for (String x : tmp) {
answer += x;
}
return answer;
}
}
'자료구조&알고리즘 > 프로그래머스' 카테고리의 다른 글
[Programmers] 2의 영역 (JAVA, PYTHON) (1) | 2023.10.06 |
---|---|
[Programmers] 리스트 자르기 (JAVA, PYTHON) (0) | 2023.09.23 |
[Programmers] 배열 만들기 1 (0) | 2023.09.21 |
[Programmers] 문자 개수 세기 (0) | 2023.09.21 |
[Programmers] 세로 읽기 (0) | 2023.09.21 |