프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
💡풀이💡
1. 숫자 n을 k 진수로 변환하기
1) n을 k로 나눈 나머지를 역순으로 StringBuilder에 저장하는 방법
2) Integer.toString()을 이용해 바로 n을 k진수로 변환한 후 String으로 저장하는 방법
2. 조건에 맞는 소수 찾기
- 찾고 있는 소수는 0을 기준으로 나눠지기 때문에 0으로 구분
전체 코드 :: n을 k로 나눈 나머지를 역순으로 StringBuilder에 저장
import java.io.*;
import java.util.*;
class Solution {
public int solution(int n, int k) {
// 1. n을 k 진수로 변환
String changedNum = changeNum(n, k);
// 2. 조건에 맞는 소수 찾기
StringTokenizer st = new StringTokenizer(changedNum, "0");
int answer = 0;
while(st.hasMoreTokens()) {
String token = st.nextToken();
if(isPrime(Long.parseLong(token))) answer++;
}
return answer;
}
public String changeNum(int n, int k) {
if(k == 10) return Integer.toString(n);
StringBuilder sb = new StringBuilder();
while(n > 0) {
sb.insert(0, n % k);
n = n / k;
}
return sb.toString();
}
// 소수 확인
public boolean isPrime(long num) {
if(num == 1) return false;
for(int i=2; i<= (long)Math.sqrt(num); i++) {
if(num %i == 0) return false;
}
return true;
}
}
전체 코드 :: Integer.toString()을 이용
import java.io.*;
import java.util.*;
class Solution {
public int solution(int n, int k) {
// 1. n을 k 진수로 변환
String changedNum = Integer.toString(n, k);
// 2. 조건에 맞는 소수 찾기
StringTokenizer st = new StringTokenizer(changedNum, "0");
int answer = 0;
while(st.hasMoreTokens()) {
String token = st.nextToken();
if(isPrime(Long.parseLong(token))) answer++;
}
return answer;
}
// 소수 확인
public boolean isPrime(long num) {
if(num == 1) return false;
for(int i=2; i<= (long)Math.sqrt(num); i++) {
if(num %i == 0) return false;
}
return true;
}
}
'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 2018 KAKAO BLIND RECRUITMENT] <3차> 파일명 정렬 (0) | 2023.07.16 |
---|---|
[프로그래머스 연습문제] JadenCase 문자열 만들기 (0) | 2023.07.07 |
[프로그래머스 2018 KAKAO BLIND RECRUITMENT] <1차> 캐시 (0) | 2023.07.01 |
[프로그래머스 2023 KAKAO BLIND RECRUITMENT] 이모티콘 할인행사 (0) | 2023.06.19 |
[프로그래머스 2022 KAKAO TECH INTERNSHIP] 성격 유형 검사하기 (0) | 2023.06.18 |
댓글