[문제]
https://school.programmers.co.kr/learn/courses/30/lessons/77886
[풀이]
먼저 문자열에서 "110"을 전부 추출한다. 그후 남은 문자열에 0이 없으면, 맨 앞에 110이 와야 사전 순으로 제일 앞에 오게 된다. 문자열에 0이 포함되어 있다면 가장 마지막 0의 위치를 찾은 후, 그 다음부터 추출한 문자열을 넣어줘야 한다.
이를 쉽게 하기 위해 StringBuilder를 사용하였다.
[코드]
import java.util.*;
class Solution {
public String[] solution(String[] s) {
String[] answer = new String[s.length];
for(int i=0; i<s.length; i++){
String ans = solve(s[i]);
answer[i] = ans;
}
return answer;
}
public String solve(String s){
StringBuilder sb = new StringBuilder();
StringBuilder ooz = new StringBuilder();
for(int i=0; i<s.length(); i++){
Character c = s.charAt(i);
if(sb.length()>=2 && c=='0' && sb.charAt(sb.length()-2)=='1' && sb.charAt(sb.length()-1)=='1'){
ooz.append("110");
sb.delete(sb.length()-2, sb.length());
}
else{
sb.append(c);
}
}
if(ooz.length()>0){
//0이 없으면
if(sb.indexOf("0")==-1){
sb.insert(0, ooz);
}
else{
int idx = sb.lastIndexOf("0");
sb.insert(idx+1, ooz);
}
}
return sb.toString();
}
}
'알고리즘 공부 및 문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[pro] 프로그래머스 level3 72414 광고 삽입 (Java) - 투포인터 (0) | 2023.01.03 |
---|---|
[pro] 프로그래머스 level3 86053 금과 은 운반하기 (Java) - 이분탐색 (0) | 2023.01.03 |
[pro] 프로그래머스 level3 76503 모두 0으로 만들기 (Java) - DFS (0) | 2023.01.02 |
[pro] 프로그래머스 level3 84021 퍼즐 조각 채우기 (Java) - BFS (0) | 2023.01.02 |
[pro] 프로그래머스 level3 87694 아이템 줍기 - BFS (0) | 2022.12.28 |