-
728x90
1. str이차 배열을 만들어 인덱스 번호의 문자와와 영어 단어를 담는다.
{ "인덱스 번호에 해당하는 문자", "영어단어" }
ex) n=1일때,
String str[][] = { { "s", "sun" }, { "b", "bed" }, { "c", "car" } }2. str이차 배열을 0번 인덱스 기준으로 정렬시킨다. (0번 값이 같으면, 1번 인덱스에 있는 영어 단어 값을 비교한다.)
ㄴ 0번 인덱스에는 해당 단어의 n번째에 해당하는 문자가 저장되어있다.
Arrays.sort(str, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
if (o1[0].equals(o2[0]))
return o1[1].compareTo(o2[1]); -> n번째 문자가 같으면 단어를 비교
return o1[0].compareTo(o2[0]); -> 문자열의 n번째 문자를 비교
}
});3. for문을 돌면서 순서대로 answer에 단어를 넣어준다.
import java.util.Arrays; import java.util.Comparator; class Solution { public String[] solution(String[] strings, int n) { String[][] str = new String[strings.length][2]; for (int i = 0; i < strings.length; i++) { str[i][0] = strings[i].charAt(n) + ""; str[i][1] = strings[i]; } Arrays.sort(str, new Comparator<String[]>() { @Override public int compare(String[] o1, String[] o2) { if (o1[0].equals(o2[0])) return o1[1].compareTo(o2[1]); return o1[0].compareTo(o2[0]); } }); String[] answer = new String[strings.length]; for (int i = 0; i < answer.length; i++) answer[i] = str[i][1]; return answer; } }
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[level1] 프로그래머스 - 문자열 다루기 기본(JAVA) (0) 2021.08.31 [level1] 프로그래머스 - 문자열 내림차순으로 배치하기(JAVA) (0) 2021.08.31 [level1] 프로그래머스 - 문자열 내 p와 y의 개수(JAVA) (0) 2021.08.30 [level1] 프로그래머스 - 두 정수 사이의 합(JAVA) (0) 2021.08.30 [level1] 프로그래머스 - 다트 게임(JAVA) (0) 2021.08.30 댓글