//자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
//예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
public class Main {
public static void main(String[] args) {
}
}
class Solution {
public int solution(int n) {
String num = String.valueOf(n);
int sum = 0;
for (char numbers : num.toCharArray()) {
sum += Character.getNumericValue(numbers);
}
return sum;
}
}
이 문제 같은 경우에는 아무리 코드를 살펴봐도 답이 맞는데 내 테스트케이스가 계속 맞지 않아서 보니까 테스트 케이스가 잘못되어있었다. 다음과 같이 테스트케이스 수정
package com.ki.level1.p12931;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
public class Tests {
@Test
@DisplayName("값 6")
void t1() {
Solution solution = new Solution();
assertThat(solution.solution(123)).isEqualTo(6);
}
@Test
@DisplayName("값 24")
void t2() {
Solution solution = new Solution();
assertThat(solution.solution(987)).isEqualTo(24);
}
@Test
@DisplayName("값 5")
void t3() {
Solution solution = new Solution();
assertThat(solution.solution(11111)).isEqualTo(5);
}
}
다음문제
//정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
//입출력 예 #1
//12의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다.
class Solution {
public int solution(int n) {
int sum = 0;
for (int i = 1; i <= n; i++) {
if (n % i == 0) {
sum += i;
}
}
return sum;
}
}
약수 더하기 문제 간단히 풀었다.
다음!
<%@page import="java.util.Map"%>
임포트.. 해주자..
다음.
package com.ki.level1.p12933;
//함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요.
//예를들어 n이 118372면 873211을 리턴하면 됩니다.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {}
}
class Solution {
public long solution(long n) {
// 1. 숫자를 문자열로 변환
String s = String.valueOf(n);
// 2. 문자열을 문자 배열로 변환
char[] chars = s.toCharArray();
// 3. 문자 배열을 정렬
Arrays.sort(chars);
// 4. 정렬된 문자 배열을 역순으로 변환
StringBuilder sb = new StringBuilder(new String(chars));
sb.reverse();
// 5. 역순으로 정렬된 문자열을 정수로 변환하여 반환
return Long.parseLong(sb.toString());
}
}
이게 생각보다 조금 어려었는데, 내 머리로 하지 않고 구글링해서 문자열 변환과 배열 변환, 문자열 역순같은 키워드로 검색해서 푸니까 쉽게 풀렸다.
다음.
//정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.
class Solution {
public double solution(int[] arr) {
int sum = 0;
double avg = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
return (double) sum / arr.length;
}
}
금방 풀었다. 값 다 더하고 배열 길이만큼 나누면 되니까.