https://programmers.co.kr/learn/courses/30/lessons/12915
// 주어진 배열 정렬기준 줘서 n인덱스가 같을때는 사전배열, 다를때는 n인덱스 사전배열 구현하면 되겠다.
// 테스트코드
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class Quiz1_SortingStringsTest {
Quiz1_SortingStrings q;
@BeforeEach
void setUp() {
q = new Quiz1_SortingStrings();
}
@Test
void test1() {
assertArrayEquals(new String[]{"car", "bed", "sun"}, q.solution(new String[]{"sun", "bed", "car"}, 1));
}
@Test
void test2() {
assertArrayEquals(new String[]{"abcd", "abce", "cdx"}, q.solution(new String[]{"abce", "abcd", "cdx"}, 2));
}
}
// 프로덕션코드
import java.util.Arrays;
import java.util.Comparator;
public class Quiz1_SortingStrings {
public String[] solution(String[] strings, int n) {
Arrays.sort(strings, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if (o1.charAt(n) == o2.charAt(n)) {
return o1.compareTo(o2);
}
if (o1.charAt(n) > o2.charAt(n)) {
return 1;
}
return -1;
}
});
return strings;
}
}
// 성공! 리팩토링하자
//프로덕션코드
import java.util.Arrays;
import java.util.Comparator;
public class Quiz1_SortingStrings {
public String[] solution(String[] strings, int n) {
sorting(strings, n);
return strings;
}
private void sorting(String[] strings, int n) {
Arrays.sort(strings, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if (o1.charAt(n) == o2.charAt(n)) {
return o1.compareTo(o2);
}
if (o1.charAt(n) > o2.charAt(n)) {
return 1;
}
return -1;
}
});
}
}
// 굿!
'코딩테스트연습 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 - JAVA] 기능개발 (0) | 2021.12.18 |
---|---|
[프로그래머스 - JAVA] 카카오프렌즈 컬러링북 (0) | 2021.12.17 |
[프로그래머스 - JAVA] 크레인 인형뽑기 게임 (0) | 2021.12.14 |
[프로그래머스 - JAVA] 같은 숫자는 싫어 (1) | 2021.12.13 |
[프로그래머스 - JAVA] 이상한 문자 만들기 (0) | 2021.12.12 |