https://programmers.co.kr/learn/courses/30/lessons/12915?language=java
풀이
1. strings 배열의 각 배열의 n번째 원소를 비교해 정렬 => charAt()
2. n번째 원소가 같을 경우 사전순으로 앞선 문자열을 앞쪽에 위치 =>compareTo()
charAt()는 인자의 위치에 있는 char값을 반환하는 String 클래스의 메소드이다.
=> 2중 for문을 사용해서 strings[i].charAt(n) 와 string[j].charAt(n)을 비교해 앞 원소의 n번째 원소가 더 클 경우 i번째와 j번째 strings 원소의 위치를 바꿔주었다. (가장 처음 원소부터 정렬함)
compareTo()는 두 개의 문자열을 비교하는 메소드지만 equals()나 == 와 다르게 어떤 문자가 사전적인 순서로 앞에 있는지도 리턴해주기 때문에 리스트를 정렬하기에 용이하다. 리턴값에 따른 결과는 다음과 같다.
- 0 : 두 개의 문자열이 동일
- 양수 : compareTo()를 호출하는 객체가 인자보다 사전적으로 순서가 앞설 때
- 음수 : 인자가 객체보다 사전적으로 순서가 앞설 때
=> n번째 원소가 같을 경우엔 compareTo()로 strings[i]와 strings[j]를 비교해 정렬한다.
class Solution {
public String[] solution(String[] strings, int n) {
for(int i=0; i<strings.length-1;i++){
for(int j=i+1; j<strings.length;j++){
if(strings[i].charAt(n)>strings[j].charAt(n)){
String tmp = strings[i];
strings[i] = strings[j];
strings[j] = tmp;
}else if(strings[i].charAt(n)==strings[j].charAt(n)){
if(strings[i].compareTo(strings[j])>0){
String tmp = strings[i];
strings[i] = strings[j];
strings[j] = tmp;
}
}
}
}
return strings;
}
}
'Algorithm & Data Structure > 프로그래머스' 카테고리의 다른 글
[Java] 프로그래머스 : 3진법 뒤집기 (0) | 2022.02.07 |
---|---|
[Java] 프로그래머스 : 이상한 문자 만들기 (0) | 2022.02.07 |
[Java] 프로그래머스 : 문자열 내림차순으로 배치하기 (feat. String <-> char[]) (0) | 2022.01.31 |
[Java] 프로그래머스 : 서울에서 김서방 찾기 (0) | 2022.01.31 |
[Java] 프로그래머스 : 문자열 내 p와 y의 개수 (0) | 2022.01.31 |