https://school.programmers.co.kr/learn/courses/30/lessons/12911
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
조건
제한시간 : 20분이내
이 문제는 그렇게 어렵지 않다.
진법 변환하는 것만 잘 생각하면 될 거 같다.
아래 코드는 어떤 진법이든 원하는 갯수를 셀 수 있게끔 로직을 구현했지만,
문제에서 원하는 요구사항에 더 적합한 메서드는 Integer.bitCount(n); 다.
이진법 내에서 1의 갯수를 찾아 return 시켜주는 메서드다.
class Solution {
// 2진수 변환
public String transferRadix (int n, int radix) {
return Integer.toString(n, radix);
}
// 원하는 숫자 갯수 count
public int countNumberInString (String s, int targetNumber) {
int result = 0;
for (int i = 0; i < s.length(); i++) {
int word = s.charAt(i) - '0';
if (word == targetNumber) {
result++;
}
}
return result;
}
public int solution(int n) {
int answer = n;
int target = countNumberInString(transferRadix(answer++, 2), 1);
while(true) {
int countNumber = countNumberInString(transferRadix(answer, 2), 1);
if (target == countNumber) break;
answer++;
}
return answer;
}
}
'PS > 프로그래머스' 카테고리의 다른 글
[프로그래머스 *Java] - n 진수 게임 (0) | 2022.08.24 |
---|---|
[프로그래머스 *Java] - 파일명 정렬 (0) | 2022.08.24 |
[프로그래머스 *Java] - 방금 그곡 (0) | 2022.08.19 |
[프로그래머스 *Java] - 점프와 순간이동 (0) | 2022.08.18 |
[프로그래머스 *Java] - 스킬트리 (0) | 2022.08.17 |