[프로그래머스(Programmers)][자바(java)] (Lv2) 이진 변환 반복하기 <월간 코드 챌린지 시즌1>

728x90

 

https://programmers.co.kr/learn/courses/30/lessons/70129

 

코딩테스트 연습 - 이진 변환 반복하기

 

programmers.co.kr

 

문제 풀이

 

class Solution {
	public static int[] solution(String s) {
		int c = 0, b0 = 0, b1, l;
		while (!s.equals("1")) {
			c++; l = s.length();
			b1 = 0; 
			for (int i = 0; i < l; i++)
				if (s.charAt(i) == '1')
					b1++;
			b0 += l - b1;
			s = Integer.toBinaryString(b1);
		}
		return new int[] { c, b0 };
	}
}
class Solution {
	public static int[] solution(String s) {
		int c = 0, b0 = 0, b1, l;
		while (!s.equals("1")) {
			c++; l = s.length();
			b1 = s.replaceAll("0", "").length();
			b0 += l - b1;
			s = Integer.toBinaryString(b1);
		}
		return new int[] { c, b0 };
	}
}


-  문자열 s에서 1의 개수를 셈 ( b1 )
-  문자열 s의 길이 ( l ) 에서 b1을 뺀 게 제거해야 할 0의 개수 ( b0 ) ( 누적합 )
-  b1을 이진수로 변환하여 s에 대입
-  s가 "1"이 될 때까지 반복하고, 횟수를 카운트하여 c에 넣음
-  첫 번째 원소를 c, 두 번째 원소를 b0 로 하는 int[] 출력

 

 

반응형