[Programmers] Lv0 문자열 정리하기(2) JAVA
2023. 1. 20. 23:32ㆍCS/자료구조 & 알고리즘
728x90
문제 출처
[프로그래머스 코딩 테스트 연습]
https://school.programmers.co.kr/learn/courses/30/lessons/120911
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
- 먼저 정렬을 하기 전에 먼저 my_string을 소문자로 변경해준다.
- 소문자로 변경을 해주는 이유는 sort로 정렬을 할시 대문자가 소문자 보다 앞으로 오기 때문이다. Bcad로 예를 들면 Bacd로 정렬이 되기 때문에 소문자로 먼저 변경을 해줘야 한다.
- 위의 이유는 아스키 코드로 정렬할시 A는 65이고 a는 97이기 때문에 (이는 char형을 정수형 int로 변경하면 같은 값으로 나온다.) sort로 정렬을 한다면 65가 97보다 빠르기 때무에 A 즉 대문자가 먼저 나온다.
- 이후 StringBuilder에 추가해주면된다.
- StringBuilder을 사용하는 이유는 문자열을 추가, 수정, 삭제가 많이 일어나는 경우 String 및 StringBuffer보다 빠르기 때문이다.
- 단 무조건 StringBuilder을 사용하는 것이 아니라 멀티쓰레드를 이용하고 있고 동기화가 필요하면 StringBuffer를 사용해야 된다.
- 그렇다고 StringBuffer 및 StringBuilder을 무조건 사용해서는 안된다. 문자열 연산을 안하는데 사용하면 오히려 비효율적일 수 도 있기 때문
소스 코드
import java.util.Arrays; public class Solution { public String solution(String my_string) { char[] sorting_str = my_string.toLowerCase().toCharArray(); Arrays.sort(sorting_str); StringBuilder answer = new StringBuilder(); for (char c : sorting_str) answer.append(c); return answer.toString(); } }
728x90
'CS > 자료구조 & 알고리즘' 카테고리의 다른 글
[Programmers] Lv0 제곱수 판별하기 Java (0) | 2023.01.21 |
---|---|
[Programmers] Lv0 세균 증식 JAVA (0) | 2023.01.20 |
[Programmers] Lv0 7의 개수 JAVA (0) | 2023.01.20 |
[Programmers] Lv0 잘라서 배열로 저장하기 JAVA (0) | 2023.01.20 |
[Programmers] Lv0 문자열 밀기 JAVA (0) | 2023.01.19 |