개발 공부

프로그래머스 문자열 내림차순으로 배치하기 Java 본문

코딩 테스트

프로그래머스 문자열 내림차순으로 배치하기 Java

hyecozy 2022. 11. 21. 17:57

https://school.programmers.co.kr/learn/courses/30/lessons/12917

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

import java.util.Arrays;


class Solution {
    public String solution(String s) {
        String answer = "";
        char[] ch = s.toCharArray();
        Arrays.sort(ch);
        
        for(int i = ch.length - 1; i >= 0; i--){
            answer += ch[i];
        }
        
        return answer;
    }
}

3포인트 겟 ...

 

다른 사람의 풀이를 보니 공부가 되는 코드들이 있어 좋았다

대체적으로 파라미터로 받은 String 배열을 char형 배열로 바꾸는 건 비슷했는데 그 뒤를 StringBuilder를 이용해 푼 코드가 있었다

 

return new StringBuilder(new String(sol)).reverse().toString();

➡️new String()이란, new 생성자를 통해 String 객체를 만드는 건데 String = ""와는 다르다.

https://ict-nroo.tistory.com/18

➡️char배열을 String배열로 바꿀 때 String 생성자를 통해서 변환이 가능하다

https://hianna.tistory.com/541

➡️이를 String이 아닌 StringBuilder로 풀면 빠른 속도와 적은 부하로 성능이 좋아진다

String은 변하지 않는 성질을 갖고 있어서 String 객체와 String 객체를 더할 때 또 다시 새로운 객체를 만들지만

StringBuilder는 기존 객체에 더해지는 방식이기 때문에 그렇다

➡️reverse()

StringBuilder와 StringBuffer에 제공되는 메소드

String이었어도 괜찮았을 거 같은데 왜 Builder를 썼을까 생각해 봤는데 reverse라는 메소드가 있었음

어? 그럼 Buffer를 써도 괜찮았잖아? 라고 생각할 수도 있는데 하나의 작업만 처리하는 클래스라면 StringBuilder가 더 빠르다고 한다

 

 

이건 Char를 String으로 변환하는 걸 찾다가 본 글인데

https://java119.tistory.com/106

char에 + "" 해서 String형으로 만드는 거... 간편해서 종종 했던 것 같은데 위 글에서 속도가 엄청 느려진다는 것을 알게 됐다

되도록이면 valueOf()를 쓰자

Comments