https://school.programmers.co.kr/learn/courses/30/lessons/12915
๋ฌธ์์ด๋ก ๊ตฌ์ฑ๋ ๋ฆฌ์คํธ strings์, ์ ์ n์ด ์ฃผ์ด์ก์ ๋, ๊ฐ ๋ฌธ์์ด์ ์ธ๋ฑ์ค n๋ฒ์งธ ๊ธ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๋ ค ํฉ๋๋ค. ์๋ฅผ ๋ค์ด strings๊ฐ ["sun", "bed", "car"]์ด๊ณ n์ด 1์ด๋ฉด ๊ฐ ๋จ์ด์ ์ธ๋ฑ์ค 1์ ๋ฌธ์ "u", "e", "a"๋ก strings๋ฅผ ์ ๋ ฌํฉ๋๋ค.
์ฃผ์ด์ง ๋ฌธ์์ด๋ค์ ์ผ์ ํ ์ธ๋ฑ์ค์ ์์นํ ๊ธ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ ๋ฌธ์ . ์ฌ๋ฌ ๋ฐฉ๋ฒ์ด ์๊ฒ ์ง๋ง, Comparable Interface์ Class๋ฅผ ์ฌ์ฉํด ๊ตฌํํ๊ณ ์ ํ๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก, ๋ค์๊ณผ ๊ฐ์ด ์งํํ๋ค.
StringSet
๋ฅผ Comparable
์ implementํด ์ ์ธํ๋ค.int asci
์ ์ ์ฒด ๋ฌธ์์ด์ ์ ์ฅํ๋ String str
๋ก ๊ตฌ์ฑ๋๋ค.@Override
๋ฅผ ํตํด compareTo
์ ๋ก์ง์ ์์ ํ๋ค. @Override
public int compareTo(Object o) {
StringSet s = (StringSet) o;
if(this.asci>s.asci){
// ํ์ฌ ๋ณ์์ asci๊ฐ ๋น๊ต ๋์ ๋ณ์์ asci๋ณด๋ค ํด ๋ 1 ๋ฆฌํด
return 1;
}
else if(this.asci<s.asci){
// ํ์ฌ ๋ณ์์ asci๊ฐ ๋น๊ต ๋์ ๋ณ์์ asci๋ณด๋ค ์์ ๋ 1 ๋ฆฌํด
return -1;
}
else{
// ๊ฐ์ด ๊ฐ์ ๊ฒฝ์ฐ str๋ผ๋ฆฌ compareTo๋ฅผ ์ฌ์ฉํด ๋ค์ ๋น๊ต
return str.compareTo(s.str);
}
}
List<StringSet> listarr
์ ์ ์ธํ๊ณ , ์ฃผ์ด์ง ๋ฌธ์์ด ๋ฐฐ์ด์ ๋ฌธ์์ด๋ง๋ค StringSet
์ ๊ตฌ์กฐ์ ๋ง์ถฐ ๋ณํํด ์ฝ์
ํ๋ค.Collections.sort(listarr)
์ ํตํด ์ฌ์ ์๋ compareTo
๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฐ๋ค์ ์ ๋ ฌํ๋ค.import java.util.*;
import java.lang.*;
class Solution {
static class StringSet implements Comparable {
// field
int asci;
String str;
// constructor
public StringSet(int asci, String str){
this.asci = asci;
this.str = str;
}
@Override
public int compareTo(Object o) {
StringSet s = (StringSet) o;
if(this.asci>s.asci){
return 1;
}
else if(this.asci<s.asci){
return -1;
}
else{
return str.compareTo(s.str);
}
}
}
static public String[] solution(String[] strings, int n) {
String[] answer = {};
List<StringSet> listarr = new ArrayList<>();
for (int i = 0; i < strings.length; i++) {
listarr.add(new StringSet(strings[i].charAt(n), strings[i]));
}
Collections.sort(listarr);
answer = new String[strings.length];
for (int i = 0; i < answer.length; i++) {
answer[i] = listarr.get(i).str;
}
return answer;
}
}