문제 설명 :
https://school.programmers.co.kr/learn/courses/30/lessons/70129
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 요약 :
- 이진수의 1의 개수 구하기
- 1의 개수를 이진수로 변환
- 1,2 과정을 반복하며 변환횟수, 제거된 0의 개수 구하기
문제 풀이 시간 : 20분
문제 성공 여부 : 성공
접근 방법(성공) :
- charAt()으로 문자열의 '1' 개수 파악
- 1의 개수를 toBinaryString으로 이진수로 변환
- 반복
전체 코드(성공) :
class Solution {
public int[] solution(String s) {
int[] answer = new int[2];
String number = s;
while(number.length()>1){ // 1이 될 경우 break
int oneCnt = getOneCount(number); // 1의 개수 반환
int removeZeroCnt = number.length() - oneCnt; // 제거된 0의 갯수
// 정답 갱신
answer[0]++;
answer[1] += removeZeroCnt;
number = Integer.toBinaryString(oneCnt); // 이진수로 변환
}
return answer;
}
static int getOneCount(String number){ // 1의 개수 반환
int oneCnt = 0;
for(int i=0; i<number.length(); i++){
if(number.charAt(i) == '1') oneCnt++;
}
return oneCnt;
}
}
Integer.toBinaryString만 안다면 쉽게 풀 수 있는 문제 같다.
'코테 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] n^2 배열 자르기 - java (2) | 2025.05.06 |
|---|---|
| [프로그래머스] 연속 부분 수열 합의 개수 - java (2) | 2025.05.06 |
| [프로그래머스] 다음 큰 숫자 - java (2) | 2025.04.07 |
| [프로그래머스] 도둑질 - java (4) | 2025.04.03 |
| [프로그래머스] 광고 삽입 - java (4) | 2025.03.29 |