https://school.programmers.co.kr/learn/courses/30/lessons/70129
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
class Solution {
public int[] solution(String s) {
StringBuilder sb = new StringBuilder();
for(int i=0; i<s.length(); i++){
sb.append(s.charAt(i));
}
int removeZeroCount = 0;
int transformCount = 0;
while(sb.length()>1){
transformCount++;
for(int i=0; i<sb.length(); i++){
if(sb.charAt(i)=='0'){
sb.deleteCharAt(i);
removeZeroCount++;
i--;
}
}
int tmp = sb.length();
sb.delete(0,sb.length());
while(tmp>=1){
if(tmp==1) {
sb.insert(0,1);
tmp=tmp/2;
}
else{
sb.insert(0,tmp%2);
tmp=tmp/2;
}
}
}
int[] answer = {transformCount, removeZeroCount};
return answer;
}
}
인텔리제이에서 디버깅을 돌려가며 풀었고, JAVA 공식문서에서 클래스들의 메소드를 보며 풀었다.
지금까지 계속 그래왔는데 만약 위 기능들이 제공되지 않는 상황도 가정을 해봐야겠다.
다른 분들의 풀이를 보니 String 의 replaceAll() 메소드를 주로 사용하셨고, StringTokenizer 를 사용하시기도 했다.
나는 많이 사용해보지 않아서 다른 방법으로 풀게 된 것 같다.
다양한 방법들을 경험적으로 익히는 게 좋을 것 같다.
40분 정도 소요되었다.
'알고리즘 > 문제' 카테고리의 다른 글
| [프로그래머스] Lv2 피보나치 수 / JAVA (0) | 2023.02.25 |
|---|---|
| [프로그래머스] Lv2 숫자의 표현 / JAVA (1) | 2023.02.23 |
| [프로그래머스] Lv2 올바른 괄호 / JAVA (0) | 2023.02.21 |
| [프로그래머스] Lv2 최솟값 만들기 / JAVA (0) | 2023.02.20 |
| <다시풀기성공>[프로그래머스] lv2 JadenCase문자열만들기 / Java (0) | 2023.02.19 |
