주말에 넘 머리 비우고있었나
집중 안되서 오늘은 질보다 양으로,, ,,,ㅠ
문제 설명
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
제한 조건
n은 1이상 8000000000 이하인 자연수입니다.
입출력 예
n | return |
118372 | 873211 |
나의 풀이
-> long 을 문자열 배열에 담고, 오름차순으로 정렬한 뒤에 내림차순으로 뒤집기
import java.util.Arrays;
class Solution {
public long solution(long n) {
char[] arr = String.valueOf(n).toCharArray();
Arrays.sort(arr);
StringBuilder sb = new StringBuilder(new String(arr)).reverse();
return Long.parseLong(sb.toString());
}
}

문제 설명
두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.
제한 조건
a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.
a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.
a와 b의 대소관계는 정해져있지 않습니다.
입출력 예
a | b | return |
3 | 5 | 12 |
3 | 3 | 3 |
5 | 3 | 12 |
나의 풀이
-> 그냥 for문 돌려서 차례대로 쌓으면되는거아님? 삼초컷이구만
class Solution {
public long solution(int a, int b) {
long answer = 0;
for(int i = a; i< b; i++){
answer+=i;
}
return answer;
}
}

응ㅋ 아님 ㅋ
수정할 부분
a와 b의 대소관계는 정해져있지않다고 써있음! 얘네부터 정렬해야함. 문제 잘 읽자
class Solution {
public long solution(int a, int b) {
long answer = 0;
int start = Math.min(a, b);
int end = Math.max(a, b);
for (int i = start; i <= end; i++) {
answer += i;
}
return answer;
}
}

문제 설명
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
제한 사항
n은 1이상, 50000000000000 이하인 양의 정수입니다.
입출력 예
n | return |
121 | 144 |
3 | -1 |
입출력 예 설명
입출력 예#1
121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다.
입출력 예#2
3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다.
나의 풀이
-> 생각할거 딱히 없이 시키는대로 단계별로 하면 될듯?
class Solution {
public long getSquareRootSign(long n) {
double sqrt = Math.sqrt(n);
return sqrt > 0 ? getSquaredIncrementedRoot(sqrt) : -1;
}
public long getSquaredIncrementedRoot(double sqrt){
sqrt ++;
return (long) Math.pow(sqrt,2);
}
}

다른 사람들 풀이 보니까 메서드 이름도 바꾸길래
나도 네이밍까지 고심해서 해봤는데
왜 틀린 ㅋ 건ㅋ 뎅 ㅗㅠㅠㅗ?
class Solution {
public long getSquareRootSign(long n) {
double sqrt = Math.sqrt(n);
return sqrt % 1 ==0 ? getSquaredIncrementedRoot(sqrt) : -1;
}
public long getSquaredIncrementedRoot(double sqrt){
sqrt ++;
return (long) Math.pow(sqrt,2);
}
}
조건에 양수를 넣엇었당
-> 정수로 바꿈

나 열받게하려고 둘이 짝짜꿍 햇냐고ㅠ
아니지 내가 문제를 똑바로 읽었어야지
두개 조건 다 넣어서 수정!!!
class Solution {
public long solution(long n) {
double sqrt = Math.sqrt(n);
return (sqrt >0 && sqrt % 1 == 0) ? getSquaredIncrementedRoot(sqrt) : -1;
}
public long getSquaredIncrementedRoot(double sqrt){
sqrt ++;
return (long) Math.pow(sqrt,2);
}
}


양심리스네 오늘 ㅠ,,
'Chapter02 > 코딩테스트' 카테고리의 다른 글
[ 코딩테스트 ] 프로그래머스 월간 코드 챌린지 시즌2 음양더하기 (0) | 2025.03.13 |
---|---|
[코딩테스트] 하샤드 수 (0) | 2025.03.11 |
[코딩테스트] 자연수 뒤집어 배열로 만들기 (2) | 2025.03.09 |
[코딩테스트 ] 프로그래머스 Lv1. 핸드폰 번호 가리기 (2) | 2025.03.08 |
[ 코딩테스트 ] 프로그래머스 Lv2. 기능개발 (0) | 2025.03.06 |