- (212) 썸네일형 리스트형 하샤드 수 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 class Solution { public boolean solution(int x) { boolean answer = true; int n = x; int res = 0; while (n != 0) { res += n % 10; n /= 10; } if (x % res != 0) answer = false; return answer; } } Colored by Color Scripter cs 각 자리수를 구할 때 String.valueOf(x).split("")으로 분할하는 방법도 있다. 최대공약수와 최소공배수 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 class Solution { public int[] solution(int n, int m) { int a = n, b = m; int[] answer = new int[2]; // 유클리드 호제법 while (b != 0) { int r = a % b; a = b; b = r; } answer[0] = a; answer[1] = n * m / a; return answer; } } Colored by Color Scripter cs 유클리드 호제법으로 구한 최대공약수 a를 n * m에 나누게 되면 최소공배수가 된다. 콜라츠 추측 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 class Solution { public int solution(int num) { long lNum = num; int answer = 0; while (lNum != 1) { if (lNum % 2 == 0) { lNum /= 2; } else { lNum = lNum * 3 + 1; } answer++; if(answer == 500) { answer = -1; break; } } return answer; } } Colored by Color Scripter cs num에 3을 곱할 때 int의 범위를 넘어가는 경우가 생긴다. 그러므로 long으로 해결해야 한다. 정수 제곱근 판별 1 2 3 4 5 6 7 8 9 10 11 class Solution { public long solution(long n) { long answer = 0; long sqrt = (long) Math.sqrt(n); if (n == sqrt * sqrt) answer = (sqrt + 1) * (sqrt + 1); else answer = -1; return answer; } } Colored by Color Scripter cs (long) Math.pow((sqrt + 1), 2)로 제곱을 더 간단히 할 수도 있다. 평균 구하기 1 2 3 4 5 6 import java.util.stream.IntStream; class Solution { public double solution(int[] arr) { return (double) IntStream.of(arr).sum() / arr.length; } } Colored by Color Scripter cs 리스트와 배열은 합과 평균을 한 번에 구할 수 있다. 배열의 경우엔 위와 같이 구하면 되고 리스트의 경우에는 리스트.stream().mapToInt(Integer::intValue).sum() 와 같이 구한다. IntStream.of(arr).average()로 평균도 바로 구할 수 있지만 OptionalDouble 형으로 출력되기 때문에 orElse문을 붙여야 한다. Int.. 제일 작은 수 제거하기 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 import java.util.*; class Solution { public int[] solution(int[] arr) { int[] answer = {}; int[] tmp = arr.clone(); // 배열 복사 int i = 0; if (arr.length == 1) answer = new int[] { -1 }; else answer = new int[arr.length - 1]; Arrays.sort(tmp); // 정렬 for (int a : arr) { if (a != tmp[0]) { answer[i] = a; i++; } } return answer; } } Colored by C.. 자연수 뒤집어 배열로 만들기 1 2 3 4 5 6 7 8 9 10 11 12 13 import java.util.*; class Solution { public long[] solution(long n) { int len = (int) Math.log10(n) + 1, i = 0; // 수 길이 구하기 long[] answer = new long[len]; while (n != 0) { answer[i] = n % 10; n /= 10; i++; } return answer; } } Colored by Color Scripter cs 자리수를 구하기 위해 Math 함수를 썼다. "" + n, String.valueOf(n), Long.toString(n)와 같이 String으로 변환 후 length 함수로 구하는 방법도 있다. 약수의 합 1 2 3 4 5 6 7 8 9 10 11 class Solution { public int solution(int n) { int answer = 0; for(int i = 1; i i = 1부터 i 이전 1 ··· 18 19 20 21 22 23 24 ··· 27 다음