내가 푼 코드
import java.util.*;
import java.io.*;
class Solution {
public int[] solution(String s) {
int[] answer = new int[2];
Queue<String> q = new LinkedList<>();
int changeNum = 0;
int zeroNum = 0;
while(!s.equals("1")){
zeroNum += s.length()-s.replaceAll("0","").length();
s = s.replaceAll("0","");
int len = s.length();
if(len==1) break;
while(len>0){
if(len%2==0){
q.add("0");
len/=2;
continue;
}if(len%2==1){
q.add("1");
len/=2;
continue;
}
}
int size = q.size();
//System.out.println(size);
s = "";
for(int i=0;i<size;i++){
s += q.poll();
}
changeNum++;
}
answer[0] = changeNum+1;
answer[1] = zeroNum;
return answer;
}
}
자바에 정수 -> 이진변환String 메서드가 있는지 모르고 복잡하게 푼 코드
import java.util.*;
import java.io.*;
class Solution {
public int[] solution(String s) {
int[] answer = new int[2];
int zeroNum = 0;
while(s.length()>1){
int oneCnt = 0;
for(int i=0;i<s.length();i++){
if(s.charAt(i)=='0')answer[1]++;
else oneCnt++;
}
s = Integer.toBinaryString(oneCnt);
answer[0]++;
}
return answer;
}
}
해당 메서드 적용하면 간단하게 풀린다...!
오늘의 회고
- 자바를 안한지 너무 오래되어서 암기하고 있는 메서드가 없지만 복잡하게라도 풀 수 있으니 풀이를 빨리 생각해내자
- 알게된 메서드는 제대로 정리해서 내 것으로 만들 것..!
- 내일(4/11) 학습 예정 : 스프링부트 로그인 공부, 재귀 알고리즘 정리
'algorithm > 문제 풀이' 카테고리의 다른 글
99클럽 코테 스터디 12일차 TIL - 프로그래머스 연속된 부분 수열의 합 (0) | 2024.04.12 |
---|---|
99클럽 코테 스터디 11일차 TIL - 백준 14888 (연산자 끼워넣기) (0) | 2024.04.11 |
99클럽 코테 스터디 9일차 TIL - 백준 1697번 (숨바꼭질) (0) | 2024.04.09 |
99클럽 코테 스터디 8일차 TIL - 백준 1931 (회의실배정) (0) | 2024.04.08 |
백준 1654번 (랜선 자르기) 자바 Java (0) | 2024.04.07 |