문제 주소
https://school.programmers.co.kr/learn/courses/30/lessons/12917
문제 설명
문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
제한 사항
- str은 길이 1 이상인 문자열입니다.
입출력 예
s return
"Zbcdefg" | "gfedcbZ" |
풀이 과정
⭐Java String to char Array
char[] chars = str.toCharArray();
⭐Java char array to String
String string = new String(charArray);
import java.util.Arrays;
class Solution {
public String solution(String s) {
char [] c = s.toCharArray();
Arrays.sort(c);
return new String(c);
}
}
테스트 1
입력값 〉 | "Zbcdefg" |
기댓값 〉 | "gfedcbZ" |
실행 결과 〉 | 실행한 결괏값 "Zbcdefg"이 기댓값 "gfedcbZ"과 다릅니다. |
sort가 안먹혔나본데?
찾아보니 이런게 있음
import java.util.*;
class Solution {
public String solution(String s) {
String answer = "";
char[] temp = s.toCharArray();
int[] intTemp = new int[temp.length];
for(int i =0; i<temp.length; i++){
intTemp[i]=(int)temp[i];
}
Arrays.sort(intTemp);
for(int i =0; i<intTemp.length; i++){
temp[intTemp.length-1-i]= (char)intTemp[i];
}
answer = new String(temp);
return answer;
}
}
⭐Java arrays.sort revers Order
Arrays.sort(arr, Collections.reverseOrder());
import java.util.Arrays;
import java.util.Collections;
class Solution {
public String solution(String s) {
char [] charArr = s.toCharArray();
int [] intArr = new int[charArr.length];
for(int i=0; i<charArr.length;i++){
intArr[i] = (int)charArr[i];
}
Arrays.sort(intArr,Collections.reverseOrder());
for(int i=0; i<charArr.length;i++){
charArr[i] = (char)intArr[i];
}
return new String(charArr);
}
}
이렇게 함
그리고 Collections 를 쓰고싶으면 Integer를 써야한다는 사실을 알게됨
/Solution.java:10: error: no suitable method found for sort(int[],Comparator<Object>)
Arrays.sort(intArr,Collections.reverseOrder());
// Java program to Sort a Subarray in Descending order
// Using Arrays.sort()
// Importing Collections class and arrays classes
// from java.util package
import java.util.Arrays;
import java.util.Collections;
// Main class
public class GFG {
// Main driver method
public static void main(String[] args)
{
// Note that we have Integer here instead of
// int[] as Collections.reverseOrder doesn't
// work for primitive types.
Integer[] arr = { 13, 7, 6, 45, 21, 9, 2, 100 };
// Sorts arr[] in descending order using
// reverseOrder() method of Collections class
// in Array.sort() as an argument to it
Arrays.sort(arr, Collections.reverseOrder());
// Printing the array as generated above
System.out.println("Modified arr[] : "
+ Arrays.toString(arr));
}
}
⭐Java Integer to int
Integer any = (Integer)ht.get("test");
int i = any.intValue();v
제출 코드
import java.util.Arrays;
import java.util.Collections;
class Solution {
public String solution(String s) {
char [] charArr = s.toCharArray();
Integer [] intArr = new Integer[charArr.length];
for(int i=0; i<charArr.length;i++){
intArr[i] = (int)charArr[i];
}
Arrays.sort(intArr,Collections.reverseOrder());
String answer = "";
for(int i=0; i<charArr.length;i++){
charArr[i] = (char)(intArr[i].intValue());
}
return new String(charArr);
}
}
다른 사람의 풀이
import java.util.*;
class Solution {
public String solution(String s) {
return s.chars().boxed().sorted(Collections.reverseOrder()).collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append).toString();
}
}
오.. .collect 부터 살짝 이해 안감
나중에 다시 봐야지
'Coding Test' 카테고리의 다른 글
[프로그래머스]문자열 다루기 기본 (1) | 2023.11.20 |
---|---|
[프로그래머스]부족한 금액 계산하기 (1) | 2023.11.20 |
[프로그래머스]약수의 개수와 덧셈 (1) | 2023.11.20 |
[프로그래머스]내적 (1) | 2023.11.20 |
[프로그래머스]수박수박수박수박수박수? (0) | 2023.11.20 |