이지은님의 블로그
[JAVA] 코드카타 - (16)~(20) 본문
문제 (16) : x만큼 간격이 있는 n개의 숫자
함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.
https://school.programmers.co.kr/learn/courses/30/lessons/12954
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제풀이
class Solution {
public long[] solution(int x, int n) {
long[] answer = new long[n];
for(int i =1; i<=n; i++){
answer[i-1] = (long)x*i;
}
return answer;
}
}
문제 (17) : 자연수 뒤집어 배열로 만들기
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
https://school.programmers.co.kr/learn/courses/30/lessons/12932
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제풀이
class Solution {
public int[] solution(long n) {
int size = (int)( Math.log10(n)+1 ); // 숫자의 자릿수를 구하는 코드
int[] answer = new int[size];
for (int i =0;i<size; i++){
answer[i] = (int)(n % 10);
n /= 10;
}
return answer;
}
}
문제 (18) : 문자열을 정수로 바꾸기
문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.
https://school.programmers.co.kr/learn/courses/30/lessons/12925
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제풀이
class Solution {
public int solution(String s) {
int answer = Integer.parseInt(s);
return answer;
}
}
문제 (19) : 정수 제곱근 판별
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
https://school.programmers.co.kr/learn/courses/30/lessons/12934
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제풀이
class Solution {
public long solution(long n) {
long answer = 0;
if(Math.sqrt(n) % 1 > 0) answer = -1;
else answer = (long) Math.pow(Math.sqrt(n)+1,2);
return answer;
}
}
문제 (20) : 정수 내림차순으로 배치하기
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
https://school.programmers.co.kr/learn/courses/30/lessons/12933
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제풀이
class Solution {
public long solution(long n) {
long[] input = new long[(int)(Math.log10(n) + 1)];
for(int i = 0; i<input.length;i++){
input[i] = n % 10;
n /= 10;
}
long temp = 0;
for(int i = 0; i<input.length;i++){
for(int j = 0; j<input.length;j++){
if(input[i]<input[j]){
temp = input[i];
input[i] = input[j];
input[j] = temp;
}
}
}
long result = 0;
for(int i =0; i<input.length;i++){
result += Math.pow(10,i-1) * 10 * input[i];
}
return result;
}
}
코드를 너무 길게 쓴 것 같아서 다른 사람의 코드를 참고하고 배우도록 했다.
아래는 참고 하게된 코드이다.
import java.util.*;
class Solution {
public long solution(long n) {
String[] list = String.valueOf(n).split(""); // 입력받은 값을 String 배열로 변환
Arrays.sort(list); // 정렬
StringBuilder sb = new StringBuilder();
for (String aList : list) sb.append(aList); // list의 순서대로 StringBuilder에 저장
return Long.parseLong(sb.reverse().toString()); // long자료형으로 변환
}
}
이후 조금 더 간결해진 코드를 작성하게되었다.(StringBuilder를 사용하지 않는 코드)
class Solution20 {
public long solution(long n) {
String[] array = String.valueOf(n).split("");
Arrays.sort(array); // 정렬
long[] input = new long[array.length];
int j = 0;
for(String s : array){
input[j] = Long.parseLong(s);
j++;
}
long result = 0;
for(int i =0; i<input.length;i++){
result += Math.pow(10,i-1) * 10 * input[i];
}
return result;
}
}
'알고리즘 공부 > [JAVA] 코드카타' 카테고리의 다른 글
[JAVA] 코드카타 - (26)~(30) (0) | 2025.01.10 |
---|---|
[JAVA] 코드카타 - (21)~(25) (0) | 2025.01.10 |
[JAVA] 코드카타 - (11)~(15) (0) | 2025.01.07 |
[JAVA] 코드카타 - (6)~(10) (0) | 2025.01.06 |
[JAVA] 코드카타 - (1)~(5) (0) | 2025.01.06 |