▶️ k진수에서 소수 개수 구하기
▶️ 다음 큰 숫자
출처 : 프로그래머스 코딩테스트 연습 > 2022 KAKAO BLIND RECRUITMENT > k진수에서 소수 개수 구하기
[오답 코드]
class Solution {
public int solution(int n, int k) {
int answer = 0;
String result = Integer.toString(n, k);
String[] arr = result.split("0");
for (int i = 0; i < arr.length; i++) {
if(!arr[i].isEmpty()){
int num = Integer.valueOf(arr[i]);
if(isPrime(num)) {
answer++;
}
}
}
return answer;
}
public boolean isPrime(int num) {
if (num < 2) {
return false;
}
int sqrt = (int) Math.sqrt(num);
for (int i = 2; i <= sqrt; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
}
[수정 코드]
class Solution {
public int solution(int n, int k) {
int answer = 0;
String result = Integer.toString(n, k);
String[] arr = result.split("0");
for (int i = 0; i < arr.length; i++) {
if(!arr[i].isEmpty()){
long num = Long.parseLong(arr[i]);
if(isPrime(num)) {
answer++;
}
}
}
return answer;
}
public boolean isPrime(long num) {
if (num < 2) {
return false;
}
int sqrt = (int) Math.sqrt(num);
for (int i = 2; i <= sqrt; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
}
출처 : 코딩테스트 연습 > 연습문제 > 다음 큰 숫자
class Solution {
public int solution(int n) {
int answer = 0;
boolean check = true;
String result = Integer.toString(n, 2);
int nOneCnt = countOne(result);
while(check) {
n++;
String temp = Integer.toString(n, 2);
if (nOneCnt == countOne(temp)) {
check = false;
}
}
return n;
}
public int countOne(String s) {
int cnt = 0;
for(int i = 0; i < s.length(); i++) {
if(s.charAt(i) == '1') {
cnt++;
}
}
return cnt;
}
}