문제
https://school.programmers.co.kr/learn/courses/30/lessons/70129?language=java
해답
class Solution {
int zeroCnt = 0;
int convCnt = 0;
public int[] solution(String s) {
while(s.length()>1){
s=deleteZero(s);
}
return new int[]{convCnt,zeroCnt};
}
public String deleteZero(String p_s){
String[] splArr = p_s.split("");
int oneLen = 0;
for(String num : splArr){
if(num.equals("0"))
zeroCnt++;
else
oneLen++;
}
return tenToTwo(oneLen);
}
public String tenToTwo(int oneLen){
StringBuilder temp = new StringBuilder();
int divider = 2;
while(oneLen>0){
if(oneLen%divider==1){
temp.append("1");
}else{
temp.append("0");
}
oneLen/=2;
}
convCnt++;
return temp.reverse().toString();
}
}
해설
이진변환을 할때 0을 뒤에서 부터 붙이는데 stringbuilder에 해당기능이 존재하지않아
끝까지 작성 후 reverse 메서드로 역순으로 바꾸어 주었다.
그외엔 특별한 내용이 없는것으로 보이는 문제
'Coding Test > JAVA 코딩테스트 풀이정리(프로그래머스)' 카테고리의 다른 글
프로그래머스 스쿨(Java - Lv.2) - 이진 변환 반복하기[수학] (0) | 2025.07.20 |
---|---|
프로그래머스 스쿨(Java - Lv.1) - 대충 만든 자판[복잡한 경우의 순회] (0) | 2025.04.09 |
프로그래머스 스쿨(Java - Lv.2) - 무인도[BFS] (0) | 2025.03.26 |
프로그래머스 스쿨(Java - Lv.1) - 체육복[그리디 + priorityque] (0) | 2025.03.11 |
프로그래머스 스쿨(Java - Lv.2) - 디펜스 게임[그리디 + priorityque] (1) | 2025.03.04 |