728x90
문제 지문 #6
어떤 자리 수 k가 주어졌을 때 각 자릿수의 k 제곱의 합이 원래 수가 되는 수를 자아도취 수라고 합니다. 예를 들어 153은 세 자리 자아도취 수입니다.
자연수 k가 매개변수로 주어질 때, k 자리 자아도취 수들을 배열에 오름차순으로 담아 return 하도록 solution 메소드를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요.
#####매개변수 설명
k가 solution 메소드의 매개변수로 주어집니다.
- k는 3 이상 6 이하인 자연수입니다.
#####return 값 설명
k 자리 자아도취 수를 오름차순으로 정렬한 뒤 배열에 담아 return 합니다.
#####예시
k | return |
3 | [153, 370, 371, 407] |
#####예시 설명
- 153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153
- 370 = 3^3 + 7^3 + 0^3 = 27 + 343 + 0 = 370
- 371 = 3^3 + 7^3 + 1^1 = 27 + 343 + 1 = 371
- 407 = 4^3 + 0^3 + 7^3 = 64 + 0 + 343 = 407
728x90
혼자 풀이
빈칸 채우기 문제입니다.
빈칸이 칸하나가 아니라 두줄을 채워야 하기 때문에 난이도가 있습니다. 처음 이 문제를 봤으면 못풀었을거 같은데, 앞서 이와 유사하게 자리수별로 계산하는 것을 해보았기 때문에, 시간을 좀 걸렸지만 푸는 것에 성공은 했습니다.
자리수 별로 계산하는 것은 자주 나오는 패턴이니 익숙해지도록 연습하고 외워둘 필요가 있습니다.
k제곱을 구하는 함수를 구현해서 사용했네요. Math.pow()도 동일한 기능을 제공한다는 거 기억해두면 좋겠습니다.
import java.util.Arrays;
class Main {
public int power(int base, int exponent) { //k제곱을 구하는 함수
int val = 1;
for (int i = 0; i < exponent; i++)
val *= base;
return val;
}
public int[] solution(int k) {
//k자리수 자아도취수는 10의 K제곱보다 작음 ex) k가 4이면 자아도취수는 9999가 최대값이고, 10000보다 작음
int range = power(10, k);
int[] answer = new int[range];
int count = 0;
//
for (int i = range / 10; i < range; i++) {
int current = i; //현재 계산중인 자리의 수
int calculated = 0; //각자리의 k제곱을 합함
while (current != 0) {
// @@@;
// @@@;
calculated+=power(current%10,k); //뒷자리부터 계산함. 10으로 나눈 나머지가 1의 자리임
current=current/10; //1의 자리가 빠졌으므로 10을 나눈 몫으로 자리수별 계산
}
if (calculated == i) //calculated가 i와 같으면 자아도취수
answer[count++] = i; //count를 1증가시키고, 배열에 i를 저장
}
int[] ret = new int[count];
for (int i = 0; i < count; i++)
ret[i] = answer[i]; //answer에서 count만큼 원소를 추출해서 반환
return ret;
}
// 아래는 테스트케이스 출력을 해보기 위한 main 메소드입니다.
public static void main(String[] args) {
Main sol = new Main();
int k = 3;
int[] ret = sol.solution(k);
// 실행] 버튼을 누르면 출력값을 볼 수 있습니다.
System.out.printf("solution 메소드의 반환 값은 ");
System.out.printf(Arrays.toString(ret));
System.out.printf(" 입니다.\n");
}
}
정답
혼자 풀이와 정답이 동일합니다.
실습은 아래 참고
2022.10.25 - [Programming/Cos Pro 1급] - Cos Pro 1급 공부 사이트 추천 - 구름 에듀(https://edu.goorm.io/)
728x90
'Programming > Cos Pro 1급' 카테고리의 다른 글
Cos Pro 1급 - 샘플 문제 풀이 4차 8번 (숫자카드 조합하기-재귀함수) (4) | 2022.11.05 |
---|---|
Cos Pro 1급 - 샘플 문제 풀이 4차 7번 (게임 유닛 체력 구하기-상속) (1) | 2022.10.30 |
Cos Pro 1급 - 샘플 문제 풀이 4차 5번 (문자열 뒤집기) (1) | 2022.10.29 |
Cos Pro 1급 - 샘플 문제 풀이 4차 4번 (마방진 만들기) (0) | 2022.10.28 |
Cos Pro 1급 - 샘플 문제 풀이 4차 3번 (스키장 이용권 최소 비용 계산) (1) | 2022.10.28 |
댓글