[Programmers] ํ์ผ๋ช ์ ๋ ฌ (Java)
by ๋๋ถ๋
์ฝ๋ฉํ ์คํธ ์ฐ์ต - [3์ฐจ] ํ์ผ๋ช ์ ๋ ฌ
ํ์ผ๋ช ์ ๋ ฌ ์ธ ์ฐจ๋ก์ ์ฝ๋ฉ ํ ์คํธ์ ๋ ์ฐจ๋ก์ ๋ฉด์ ์ด๋ผ๋ ๊ธฐ๋๊ธด ๋ธ๋ผ์ธ๋ ๊ณต์ฑ๋ฅผ ๋ฌด์ฌํ ํต๊ณผํด ์นด์นด์ค์ ์ ์ฌํ ๋ฌด์ง๋ ํ์ผ ์ ์ฅ์ ์๋ฒ ๊ด๋ฆฌ๋ฅผ ๋งก๊ฒ ๋์๋ค. ์ ์ฅ์ ์๋ฒ์๋ ํ๋ก๊ทธ๋จ
programmers.co.kr
์ด ๋ฌธ์ ๋ ํ์ผ๋ช ์ ํน์ ์กฐ๊ฑด์ ๋ง์ถฐ ์๋ฅธ ํ ์ ๋ ฌํ๋ ๋ฌธ์ ๋ก,
์ฒ์ ๋ฑ์ฅํ๋ ์ซ์๋ฅผ ๊ธฐ์ค์ผ๋ก HEAD, NUMBER, TAIL๋ก ๋๋๋๋ค.
๊ทธ๋ฌ๋๊น ๋ฌธ์, ์ฒ์ ๋ฑ์ฅํ๋ ์ซ์, ์ต๋ ๊ธธ์ด 5, ๋ฌธ์๋ก HEAD, NUMBER, TAIL์ ๋๋๋ ํํ์ ๋๋ค.
HEAD ๋ถ๋ถ ๋ฌธ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฌ์ ์ ์ ๋ ฌ์ ํ๋๋ฐ, ์ด ๋ ๋์๋ฌธ์๋ ๊ตฌ๋ถํ์ง ์์ต๋๋ค.
๋ง์ฝ, HEAD ๋ถ๋ถ์ ๋ฌธ์๊ฐ MUZI, muzi์ ๊ฐ์ ํํ๋ผ๋ฉด ๋์ผํ ์์๋ก ์ทจ๊ธ๋๋ฏ๋ก NUMBER๋ฅผ ํ์ธํฉ๋๋ค.
NUMBER๊ฐ 00001๊ณผ ๊ฐ์ ํํ๋ผ๋ฉด, ์์ 0์ ๋ฌด์๋๋ฉฐ 1๋ก ์ทจ๊ธํ์ฌ ๊ณ์ฐ์ ํฉ๋๋ค. (intํ์ผ๋ก ๋ณ๊ฒฝ)
๋ง์ฝ, HEAD ๋ถ๋ถ๊ณผ NUMBER์ ์ซ์๊ฐ ๋ชจ๋ ๊ฐ์ผ๋ฉด, ์๋ ์ ๋ ฅ์ ์ฃผ์ด์ง ์์๋ฅผ ์ ์งํฉ๋๋ค.
๊ทธ ํ, ๋ณ๊ฒฝ๋ ์์์ ๋ง์ถฐ ์ ๋ ฌ๋ ๋ฐฐ์ด์ ์ถ๋ ฅํ๋ ๋ฌธ์ ์ ๋๋ค.
์กฐ๊ฑด์ ๋ฐ๋ฅธ ์ ๋ ฌ์ ํ๊ธฐ ์ํด์๋ Comparator๋ฅผ ๊ตฌํํ๋ฉด ๋ฉ๋๋ค.
๋ค์ด์ค๋ ๋ ๋ฌธ์์ ๋ํด ์ซ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋ถ๋ถ๋ง ๊ฐ์ ธ์ค๋ฉด ๋๋ฏ๋ก
์ ๊ท์ ํํ์ ์ด์ฉํด ์ซ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋ผ์ค ํ 0๋ฒ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
๊ทธ ํ compareTo๋ฅผ ์ฌ์ฉํด ๋น๊ต๋ฅผ ํ๋๋ฐ, ์ด ๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๊ธฐ ์ํด ๋ชจ๋ ์๋ฌธ์๋ก ๋ณ๊ฒฝํด์ค๋๋ค.
๋ณ๊ฒฝ๋ ์๋ฌธ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ ๋ฌธ์๋ฅผ ๋น๊ตํ์์ ๋,
๋ฌธ์1 > ๋ฌธ์2์ธ ๊ฒฝ์ฐ ์์, ๋ฌธ์1 < ๋ฌธ์2์ธ ๊ฒฝ์ฐ ์์, ๋ฌธ์1==๋ฌธ์2์ธ ๊ฒฝ์ฐ 0์ ๋ฐํํฉ๋๋ค.
0์ ๋ฐํํ์ง ์์ ๊ฒฝ์ฐ ๊ทธ๋๋ก ๋ฆฌํด์ํค๋ฉด, Comparator๊ฐ ์ํ๋ฉ๋๋ค. ์์๋ผ๋ฉด ์๋ฆฌ๊ฐ ๋ณ๊ฒฝ๋๊ฒ ์ฃ !
๊ทธ๋ฌ๋ 0์ธ ๊ฒฝ์ฐ์๋ ์ซ์์ ๋ํ ๋น๊ต๊ฐ ํ์ํฉ๋๋ค.
HEAD ๊ธธ์ด๋งํผ ์ ์ธ์ํจ ๋ค์, ์ซ์์ ๋ํด์ ๊ธธ์ด๊ฐ ์ต๋ 5๊ฐ ๋ ๋๊น์ง ์ฐพ์ต๋๋ค.
๊ทธ ํ, ์ฐพ์ ์ซ์(๋ฌธ์์ด ํํ)๋ฅผ ์ ์ํ์ผ๋ก ๋ณ๊ฒฝํ์ฌ ๋ฐํํ๋ ํจ์๋ฅผ ๋ง๋ค์ด์ค๋๋ค.
์ด๋ ๊ฒ ๋ฐํ๋ ๋ ์ซ์๋ฅผ ๋น๊ตํ์ฌ Comparator๋ฅผ ์ํํฉ๋๋ค.
์์ ๊ฐ์ ํํ๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
import java.util.*;
class Solution {
public String[] solution(String[] files) {
String[] answer = {};
// ์กฐ๊ฑด์ ๋ฐ๋ฅธ ์ ๋ ฌ์ ํ๊ธฐ ์ํด Comparator ๊ตฌํ
// compare ๋ฆฌํด๊ฐ์ด ์์๋ฉด ๋ ๊ฐ์ฒด์ ์๋ฆฌ๋ฅผ ๋ฐ๊ฟ์ค
Arrays.sort(files, new Comparator<String>(){
@Override
public int compare(String o1, String o2) {
// ์ซ์ ์๋ถ๋ถ์ ์๋ผ์ head ์์ฑ
String head1 = o1.split("[0-9]")[0];
String head2 = o2.split("[0-9]")[0];
// compareTo๋ฅผ ์ฌ์ฉํ ๋น๊ต๋ฅผ ์ํด์๋ ๋ชจ๋ ์๋ฌธ์๋ก ๋ณ๊ฒฝ ํ ๋น๊ต
int result = head1.toLowerCase().compareTo(head2.toLowerCase());
if (result == 0) { // ๊ฐ์ ๋ฌธ์์ผ ๊ฒฝ์ฐ ์ซ์๋ก ๋น๊ต
result = convertNum(o1, head1) - convertNum(o2, head2);
}
return result;
}
});
return files;
}
public int convertNum(String str, String head) {
str = str.substring(head.length()); // head ๊ธธ์ด๋งํผ ์๋ผ์ ์ซ์๋ถํฐ ์์ํ๊ฒ ๋ง๋ค์ด์ค
String result = "";
for (char c : str.toCharArray()) {
if (Character.isDigit(c) && result.length() < 5) // ์ซ์์ธ์ง ๊ทธ๋ฆฌ๊ณ result ๊ธธ์ด๊ฐ 5๊ฐ ์ ๋๋์ง ํ์ธ
result += c;
else
break;
}
return Integer.valueOf(result);
}
}
'Algorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Programmers] n์ง์ ๊ฒ์ (Java) (0) | 2021.06.26 |
---|---|
[Programmers] ์ฌ ์ฐ๊ฒฐํ๊ธฐ (Java) (0) | 2021.06.10 |
[Programmers] ๊ตฌ๋ช ๋ณดํธ (Java) (0) | 2021.05.01 |
[Programmers] ๋ฉ๋ด ๋ฆฌ๋ด์ผ (Python) (0) | 2021.04.17 |
[Programmers] ๋๋ฌผ ์ ๊ตฌํ๊ธฐ (COUNT) (0) | 2021.04.17 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
๋๋ถ๋์ Devlog
๋๋ถ๋