알고리즘
프로그래머스 이진 변환 반복하기
오래먹는오레오
2021. 1. 5. 09:31
이진 변환 반복하기 : programmers.co.kr/learn/courses/30/lessons/70129
코딩테스트 연습 - 이진 변환 반복하기
programmers.co.kr
1과 0으로 이루어진 문자열이 주어졌을때 주어진 규칙을 이용해서 문자열을 1로 바꾸는 문제이다.
출력은 1까지 만드는데 걸린 횟수와 지워진 0을 배열로 출력하는 문제 였다.
해당 문제를 풀때 bitCount를 사용하려고 했는데 제출하면 런타임 애러가 발생했다.
곰곰히 생각해보니 문자열로 주어진 문자의 길이가 150,000이하 이기 때문에 Integer범위를 넘어가 버리는 현상 때문이었다.
따라서 그냥 정공법을 선택했다.
import java.util.*;
class Solution {
public int[] solution(String s) {
int[] answer = new int[2];
while (s.length() != 1) {
answer[0]++;
answer[1] += oneCount(s);
s = s.replace("0", "");
s = Integer.toBinaryString(s.length());
}
return answer;
}
public int oneCount(String s) {
int answer = 0;
for (char c : s.toCharArray()) {
if (c == '0') {
answer++;
}
}
return answer;
}
}