https://school.programmers.co.kr/learn/courses/30/lessons/12917
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
이건 열받아서 기록한다.
문제는
문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
이러하다.
문제가 뭔가 이상한 것 같은데
입출력 예
s | return |
"Zbcdefg" | "gfedcbZ" |
뭔 말 하는지는 알겠으니까 일단 풀어 봄.
처음에는 String을 Char[]로 만들어서 이걸 reverseOrder 하려고 했다.
그런데 reverseOrder는 primitive type에는 쓸 수 없다.
그럼 이걸 어떻게 역순으로 하지? <- 사실 gae간단함. 근데 생각 못 함.
구글링을 했고
import java.util.Arrays;
import java.util.Collections;
class Solution {
public String solution(String s) {
return new StringBuilder(new String(s)).reverse().toString();
}
}
이렇게 접근함.
테스트 코드에서는 먹힘.
그런데 제출하니까 100% 틀림.
Why? '정렬'을 안 했잖아...
import java.util.*;
class Solution {
public String solution(String s) {
char[] chars = s.toCharArray();
StringBuilder sb = new StringBuilder();
Arrays.sort(chars);
for(int i=chars.length-1; i>=0; i--) {
sb.append(chars[i]);
}
return sb.toString();
}
}
열받아서 이렇게 함.
되긴 됨.
그런데 다른 사람의 풀이 보고 폭발함.
import java.util.*;
class Solution {
public String solution(String s) {
char[] chars = s.toCharArray();
Arrays.sort(chars);
return new StringBuilder(new String(chars)).reverse().toString();
}
}
내가 처음에 사용하려고 했던 방식이 맨 위에 있었기 때문.
배운 것.
1. char[]을 String 생성자에 넣을 수 있다!
2. 한 번 더 생각하자!!!
'코딩테스트 연습' 카테고리의 다른 글
컨트롤 제트 (0) | 2024.05.05 |
---|---|
이진수 더하기 (0) | 2024.05.05 |
제일 작은 수 제거하기 (0) | 2024.05.04 |
가운데 글자 가져오기 (0) | 2024.05.04 |
없는 숫자 더하기 (0) | 2024.05.02 |