1. 약수의 개수와 덧셈
left와 right 사이에 정수 들중 약수의 갯수가 짝수면 더하고 홀수면 빼는 문제입니다.
- 약수를 구할 때 for문 반복을 Math.sqrt(N)로 지정한다.
class Solution {
public int solution(int left, int right) {
int answer = 0;
for (int i = left; i <= right; i++) {
int count = 0;
for (int a = 1; a <= Math.sqrt(i); a++) {
if (i % a == 0) {
if (a == i / a) { // 제곱수일 때
count += 1;
} else { // 일반 약수 일때
count += 2;
}
}
}
// 약수갯수가 짝수 일 경우 + 홀수면 -
if (count % 2 == 0) {
answer += i;
} else {
answer -= i;
}
}
return answer;
}
}
다른분들 코드를 찾아보니 위에 제곱수인 경우 약수 갯수가 홀수인점을 이용하여 코드를 작성하신분들도 있었다.
class Solution {
public int solution(int left, int right) {
int answer = 0;
for (int i=left;i<=right;i++) {
//제곱수인 경우 약수의 개수가 홀수
if (i % Math.sqrt(i) == 0) {
answer -= i;
}
//제곱수가 아닌 경우 약수의 개수가 짝수
else {
answer += i;
}
}
return answer;
}
}
2. 문자열 내림차순으로 배치하기
문자열을 내림차순으로 하는 문제였는데 String 자체를 오름차순 할 수 없기에
String -> Char[] 배열로 바꿔 문자들을 배치하는 방식으로 푸는 문제이다.
import java.util.Arrays;
class Solution {
public String solution(String s) {
char[] c = s.toCharArray(); // 정렬을 위한 Char 배열 생성
Arrays.sort(c); //오름차순 정렬
// StringBuilder를 사용하기 위해 char -> String으로 바꿔서 넣어주고
// 내림차순 후 StringBuilder를 .toString으로 String 타입으로 변환해줌
String answer = new StringBuilder(new String(c)).reverse().toString();
return answer;
}
}
'코딩 테스트' 카테고리의 다른 글
스트림(Stream) 이란? (1) | 2025.04.30 |
---|---|
#코딩테스트하면서 알게 된 부분들 (2025.04.30) (0) | 2025.04.30 |
#코딩테스트하면서 알게 된 부분들 (2025.04.28) (0) | 2025.04.30 |
주요 String 메서드 모음 (0) | 2025.04.03 |
코딩 테스트를 준비하면서 알아두면 좋을 메서드 (0) | 2025.04.03 |