일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- CS
- 내가해냄
- jpa
- 스프링 부트와 AWS로 혼자 구현하는 웹 서비스
- 개발자기술면접
- 어찌저찌해냄
- Flexbox
- 운영체제
- 테스트코드
- 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 2장
- 스프링부트 테스트코드
- AWS EC2 구현
- 스프링부트
- 스프링부트와 AWS로 혼자 구현하는 웹 서비스
- 스프링부트와 AWS로 혼자 구현하는 웹서비스
- 그래도일단
- 오늘도
- 기술면접
- 트랜지스터
- 자바스크립트
- Today
- Total
개발 공부
프로그래머스 문자열 내림차순으로 배치하기 Java 본문
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()를 쓰자
'코딩 테스트' 카테고리의 다른 글
프로그래머스 약수의 개수와 덧셈 Java (+2) (0) | 2022.12.01 |
---|---|
프로그래머스 문자열 다루기 기본 Java (+12) (1) | 2022.11.29 |
프로그래머스 내적 Java (0) | 2022.11.21 |
프로그래머스 없는 숫자 더하기 Java (0) | 2022.11.21 |
프로그래머스 음양 더하기 Java (0) | 2022.11.15 |