반응형
12915번
코딩테스트 연습 - 문자열 내 마음대로 정렬하기 | 프로그래머스 (programmers.co.kr)
풀이
인덱스 번호=n 의 문자를 비교하는 문제인데,
✔ 주의할 점은 문자가 같을 경우에는 문자열 전체를 비교해야 한다는 점입니다.
- 풀이1
public String[] solution3(String[] strings, int n) {
Arrays.sort(strings, (s1, s2) -> {
if (s1.charAt(n) == s2.charAt(n)) return s1.compareTo(s2);
else return s1.charAt(n) - s2.charAt(n);
});
return strings;
}
✅ public static <T> void sort(T[] a, Comparator<? super T> c)
정렬할 때 각 인덱스를 조건으로 체크해서 정렬합니다.
람다로 작성했지만, compare() 메소드를 구현한 것으로, 반환값은 [양수, 0, 음수] 를 반환할 수 있습니다.
▶ 양수: 오름차순
▶ 0: 그대로
▶ 음수: 내림차순
위에서 설명한 주의할 점만 신경쓰면 됩니다.
인덱스의 문자가 같을 경우 문자열 비교를 통해 정렬 기준을 정합니다.
✔ 테스트 케이스 처리속도: 평균 0.9ms / 최대 1.34ms
- 풀이2
public String[] solution(String[] strings, int n) {
String[] answer = strings;
for (int i = 0; i < answer.length - 1; i++) {
for (int j = i + 1; j < answer.length; j++) {
if (answer[i].charAt(n) > answer[j].charAt(n)) {
String tmp = answer[j];
answer[j] = answer[i];
answer[i] = tmp;
} else if (answer[i].charAt(n) == answer[j].charAt(n) && answer[i].compareTo(answer[j]) > 0) {
String tmp = answer[j];
answer[j] = answer[i];
answer[i] = tmp;
}
}
}
return answer;
}
이번엔 순수한 자바 버전의 코드입니다.
선택정렬 방식으로 각 인덱스의 문자를 비교하고
각 인덱스의 문자가 같다면 문자열을 비교해서 정렬하는 방식으로 구현했습니다.
✔ 테스트 케이스 처리속도: 평균 0.05ms / 최대 0.22ms
반응형
'Algorithm > Java' 카테고리의 다른 글
프로그래머스 [1차] 다트 게임 java :: 2018 KAKAO BLIND RECRUITMENT (0) | 2022.07.01 |
---|---|
프로그래머스 - 나누어 떨어지는 숫자 배열 java (0) | 2022.07.01 |
프로그래머스 - 문자열 내림차순으로 배치하기 java (0) | 2022.06.29 |
프로그래머스 - 시저 암호 java (0) | 2022.06.27 |
프로그래머스 - 최소직사각형 java :: 위클리 챌린지 :: 86491 (0) | 2022.06.22 |