프로그래머스 0단계 문자열 정렬하기(2) 문제 입니다!
https://school.programmers.co.kr/learn/courses/30/lessons/120911
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제설명
영어 대소문자로 이루어진 문자열 my_string이 매개변수로 주어질 때, my_string을 모두 소문자로 바꾸고 알파벳 순서대로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요.
<제안사항>
1) 0< my_string 길이 < 100
내가 직접 짜본 코드
import java.util.*;
class Solution {
public String solution(String my_string) {
String answer = "";
my_string=my_string.toLowerCase();
String arr[]=my_string.split("");
String temp;
for(int i=0; i<arr.length; i++){
for(int j=i+1; j<arr.length; j++)
if((arr[i]).compareTo(arr[j])>0){
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
answer=String.join("",arr);
return answer;
}
}
코드해설
1) string 클래스 안에 있는 toLowerCase메소드를 사용하여 my_string의 대문자를 소문자로 바꿔줬습니다
2) split메소드를 사용하여 arr배열에 my_string 글자를 하나씩 배열 하나에 넣어준 뒤
3) select 배열을 사용하여 정렬했습니다.
4) 정렬할 때는 compareTo라는 메소드를 사용하였습니다.
5) 마지막으로 string 클래스 안에 있는 join 메소드를 사용하여
arr배열을 문자열로 변환 시켜 answer에 초기화 시켰습니다.
새로 알게된 점들
1. toLowerCase 메소드
이건 문자열의 대문자를 소문자로 변환하는 메소드입니다!
String 클래스 안에 있고요
반대 개념으로 toUpperCase라는 메소드도 있어요
이건 소문자를 대문자로 변환하는 함수입니다.
이 메서드를 알기 전에
for(int i=0; i<temp.length; i++) {
if((temp[i]).compareTo("a")>=0) temp[i]+= (char)32;
}
이렇게 아스키코드로 접근하려고 해서 왜 안되지? 하며 끙끙 헤매었습니다.
앞으로 아주 유용하게 써먹을 메소드가 될 거 같군요
2. split와 join 메소드
이 두가지는 서로 대비되는 메소드인데요
먼저 split 함수는 입력받은 정규표현식 또는 특정 문자를 기준으로 문자열을 나누어 배열에 저장하여 리턴하는 것입니다.
join은 split와 반대로 배열을 문자열로 합쳐주는 메소드입니다.
3. compareTo 함수
이 함수는 처음 알게 된 것은 아니고, 저번에 수업시간에 잠깐 사용했지만 까먹었기에 다시 정리해봅니다!
compareTo는 문자열을 비교해주는 함수인데요!
문자열은 참조형이기 때문에 저희가 평상시에 사용하는 오퍼레이터는 사용못해요ㅠㅠ
그리하여 eqauls compareTo와 같은 것을 사용해야됩니다
https://mine-it-record.tistory.com/133
[JAVA] 자바_compareTo ( 값 [문자열/숫자] 비교 )
compareTo() - int compareTo(NumberSubClass referenceName) - int compareTo(String anotherString) - compareTo() 함수는 두개의 값을 비교하여 int 값으로 반환해주는 함수이다. compareTo() 함수에는 위에서 설명하는바와 같이 "
mine-it-record.tistory.com
이 분 블로그를 참고하시면 좋을 거 같습니다... 저도 그랬기에 !!
다른 사람이 짠 코드
import java.util.*;
class Solution {
public String solution(String my_string) {
char[] chars = my_string.toLowerCase().toCharArray();
Arrays.sort(chars);
String answer = new String(chars);
return answer;
}
}
제가 직접 짠 코드가 복잡한 것을 알기에...
다른 사람이 짠 코드도 한번 봐봤는데요!
String.toCharArray() 함수를 사용하여 더욱 간단하게 풀 수 있네요
이 함수는 문자열을 한글자씩 쪼게서 char 배열에 넣어주는 것이라네요
헐 이렇게 쉬운 방법이 있었다니 몰랐어요ㅠㅠㅠ
또한 저는 반복문을 사용하여 select 정렬을 사용했는데
Arrays 클래스에 sort 메소드가 있었군요... 대박
만약 내림차순을 하고싶다면
Array.sort(배열명, Collections.reverseOrder()) 이렇게 사용해주면 된다네요
또 배워갑니다 !!!!!
그리고 new String()을 사용하여 answer에 char을 넣어주셨습니다
전 아주 바보같은 방법으로 풀고있었군요
지민언니 최고...(하트)
'CodingTest' 카테고리의 다른 글
프로그래머스 - 배열의 유사도 (JAVA) (0) | 2023.01.13 |
---|---|
프로그래머스 - 문자열안에 문자열 (JAVA) (2) | 2023.01.12 |
프로그래머스 - 제곱수 판별하기 (JAVA) (0) | 2023.01.11 |
프로그래머스 - 잘라서 배열로 저장하기 (JAVA) (0) | 2023.01.10 |
프로그래머스 - n의 배수 구하기 (JAVA) (0) | 2023.01.06 |