๋ฌธ์์ด๋ก ๊ตฌ์ฑ๋ ๋ฆฌ์คํธ strings
์, ์ ์ n
์ด ์ฃผ์ด์ก์ ๋, ๊ฐ ๋ฌธ์์ด์ ์ธ๋ฑ์ค n
๋ฒ์งธ ๊ธ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๋ ค ํฉ๋๋ค. ์๋ฅผ ๋ค์ด strings
๊ฐ ["sun", "bed", "car"]
์ด๊ณ n
์ด 1
์ด๋ฉด ๊ฐ ๋จ์ด์ ์ธ๋ฑ์ค 1
์ ๋ฌธ์ "u"
, "e"
, "a"
๋ก strings
๋ฅผ ์ ๋ ฌํฉ๋๋ค.
strings | n | return |
---|---|---|
["sun", "bed", "car"] | 1 | ["car", "bed", "sun"] |
["abce", "abcd", "cdx"] | 2 | ["abcd", "abce", "cdx"] |
"sun", "bed", "car"์ 1๋ฒ์งธ ์ธ๋ฑ์ค ๊ฐ์ ๊ฐ๊ฐ "u", "e", "a" ์ ๋๋ค. ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก strings๋ฅผ ์ ๋ ฌํ๋ฉด ["car", "bed", "sun"] ์ ๋๋ค.
"abce"์ "abcd", "cdx"์ 2๋ฒ์งธ ์ธ๋ฑ์ค ๊ฐ์ "c", "c", "x"์ ๋๋ค. ๋ฐ๋ผ์ ์ ๋ ฌ ํ์๋ "cdx"๊ฐ ๊ฐ์ฅ ๋ค์ ์์นํฉ๋๋ค. "abce"์ "abcd"๋ ์ฌ์ ์์ผ๋ก ์ ๋ ฌํ๋ฉด "abcd"๊ฐ ์ฐ์ ํ๋ฏ๋ก, ๋ต์ ["abcd", "abce", "cdx"] ์ ๋๋ค.
import java.util.*;
class Solution {
public String[] solution(String[] strings, int n) {
String[] answer = new String[strings.length];
strings = SWAP(strings, n);
Arrays.sort(strings);
strings = SWAP(strings, n);
answer = strings;
return answer;
}
public String[] SWAP(String[] strings, int n) {
for (int i = 0; i < strings.length; i++) {
String[] value = strings[i].split("");
String tmp = value[0];
value[0] = value[n];
value[n] = tmp;
strings[i] = String.join("", value);
}
return strings;
}
}
๋๋ ์ฒ์์ n
๋ฒ์งธ ์ธ๋ฑ์ค์ ๋ฌธ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๊ธฐ ์ํด์ ํด๋น ๋ฌธ์์ ์ธ๋ฑ์ค์ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค์ ๋ฌธ์๋ฅผ ๋ฐ๊พผ ํ ์ ๋ ฌ ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ๊ฒ์ด๋ผ ์๊ฐํ๋ค.
๊ทธ๋์ ๋ฌด์์ ๋ฌธ์์ด์ split()
ํจ์๋ก ๋๋๊ณ , n
๋ฒ์งธ ๋ฌธ์๋ฅผ ๊บผ๋ด๋ ๊ณผ์ ๊ณผ, ๊บผ๋ธ ๋ฌธ์์ ๋งจ ์ ์์์ ์๋ฆฌ๋ฅผ ๋ฐ๊ฟ์ค ํ ๋ค์ ๋ฌธ์๋ค์ join()
ํจ์๋ฅผ ํตํด ์ฌ์กฐ๋ฆฝ ์ํค๋ SWAP
ํจ์๋ผ๋ ๊ฒ์ ๋ง๋ค์ด strings
๋ฅผ ์
๋ ฅ๊ฐ์ผ๋ก ๋ฃ์๋ค.
๊ทธ๋ฌ๋ฉด n
๋ฒ์งธ ์ธ๋ฑ์ค์ ๋ฌธ์์ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค์ ๋ฌธ์๊ฐ ์๋ก ๋ฐ๋๊ฒ ๋๊ณ , ์ด ์ํ์์ Arrays.sort()
ํจ์๋ฅผ ์ฌ์ฉํด ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ ํด์ฃผ๋ฉด ๋๋ค๊ณ ์๊ฐํ๋ค.
๋ง์ง๋ง์ผ๋ก, ๋ฐ๋ ๋ฌธ์ ์์๋ฅผ ๋ณต๊ตฌ์ํค๊ธฐ ์ํด SWAP
ํจ์๋ฅผ ๋ค์ ํธ์ถํจ์ผ๋ก์จ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค๊ณ ์๊ฐ์ด ๋๋ ์ฐฐ๋..
ํต๊ณผํ ์ผ์ด์ค๋ ์์์ง๋ง, ๋๋ถ๋ถ์ ํ ์คํธ ์ผ์ด์ค์์ ์คํจ๊ฐ ๋ด๋ค.
์๊ณ ๋ณด๋ ์ ํ ์กฐ๊ฑด ์ค ๋ง์ง๋ง ์กฐ๊ฑด์ ๊ฐ๊ณผํ ๊ฒ์ด์๋ค!
์ธ๋ฑ์ค 1์ ๋ฌธ์๊ฐ ๊ฐ์ ๋ฌธ์์ด์ด ์ฌ๋ฟ ์ผ ๊ฒฝ์ฐ, ์ฌ์ ์์ผ๋ก ์์ ๋ฌธ์์ด์ด ์์ชฝ์ ์์นํฉ๋๋ค.
๊ธฐ์กด์ ๋ฐฉ๋ฒ๋๋ก ๋ผ๋ฉด, n
๋ฒ์งธ ์ธ๋ฑ์ค์ ์์นํ ๋ฌธ์๊ฐ ์๋ก ๊ฐ์ ๊ฒฝ์ฐ์ ์๊ด ์์ด ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค์ ์์น๋ฅผ ๋ฐ๊พผ ์ํ์์ ์ ๋ ฌ์ ํ์๋๋ฐ, ๊ทธ๋ ๊ฒ ๋๋ฉด ์ ๋ ฌ์ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง ์ ์๋ค๋ ์ ์ ์๊ฐํ์ง ๋ชปํ ๊ฒ์ด๋ค.! ๊ทธ๋์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฐพ์๋ณด๊ธฐ๋ก ํ๋ค.
import java.util.*;
class Solution {
public String[] solution(String[] strings, int n) {
Arrays.sort(strings, (a, b) -> {
if (a.charAt(n) != b.charAt(n)) {
return Character.compare(a.charAt(n), b.charAt(n));
}
else {
return a.compareTo(b);
}
});
return strings;
}
}
๋ค๋ฅธ ๋ฐฉ๋ฒ์ ๊ณ ๋ฏผํ๊ณ ๋ค๋ฅธ ์ฌ๋์ ํ์ด๋ฅผ ์ฐพ์๋ณด๋ค๊ฐ Arrays.sort()
์ ๋ ๋ฒ์งธ ์ธ์๋ก Comparator
์ธํฐํ์ด์ค๋ฅผ ๋๋ค์์ผ๋ก ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์๋ค.
์ด ๋๋ค ์์ ์ ๋ ฌ ๊ธฐ์ค์ ์ ์ํ๋ ์ญํ ์ ํ๋ค.
์ฆ, ๋ด๊ฐ ๊ตฌํ๊ณ ์ ํ๋ ์ ๋ ฌ ๊ธฐ์ค์ ์ฌ๊ธฐ๋ค๊ฐ ์ ์ํ๋ฉด ๋๋ ๊ฒ์ด๋ค!
๊ทธ๋์ ์ ๋ ฌ ๊ธฐ์ค์ผ๋ก ๋ ๊ฐ์ง ๊ฒฝ์ฐ๋ฅผ ๋๋์ด ์ฃผ์๋ค.
n
๋ฒ์งธ ๋ฌธ์๊ฐ ๋ค๋ฅผ ๊ฒฝ์ฐn
๋ฒ์งธ ๋ฌธ์๊ฐ ๊ฐ์ ๊ฒฝ์ฐn
๋ฒ์งธ ๋ฌธ์๊ฐ ๋ค๋ฅผ ๊ฒฝ์ฐ์๋ ํด๋น ์ธ๋ฑ์ค์ ๋ฌธ์๋ฅผ charAt(n)
ํจ์๋ฅผ ํตํด ๊ตฌํ ๋ค์ Character.compare()
ํจ์์ ์ธ์๋ก ๋ฃ์ด์ฃผ์๋ค. ์ฌ๊ธฐ์ Character.compare()
ํจ์๋ ๋ ๊ฐ์ ๋ฌธ์๋ฅผ ๋น๊ตํ ๋ ์ฌ์ฉํ๋ ํจ์์ด๋ค.
๊ทธ๋ฌ๋ฏ๋ก a
๊ฐ b
๋ณด๋ค ํฌ๋ฉด ์์ ๊ฐ์ ๋ฐํํ๊ณ , ์์ผ๋ฉด ์์ ๊ฐ์ ๋ฐํํ๊ฒ ๋จ์ผ๋ก์จ ๋ ๋ฌธ์์ด์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ ์ ์๋ค.
n
๋ฒ์งธ ๋ฌธ์๊ฐ ๊ฐ์ ๊ฒฝ์ฐ์๋ ๋ ๋ฌธ์์ด์ compareTo()
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ ฌ ์์๋ฅผ ๋ฐํํด์ฃผ๋ฉด ๋๋ค. Character.compare()
ํจ์๋ ๋ฌธ์๋ฅผ ๋น๊ตํ์ง๋ง, compareTo()
ํจ์๋ ๋ฌธ์์ด์ ๋น๊ตํ๋ ํจ์์ด๋ค. ๋จ, ๋น๊ต์ ์ํ ๋ฐํ๊ฐ์ ์๋ก ๋์ผํ๋ค.
์ด๋ ๊ฒ ํด์ ๋ชจ๋ ํ ์คํธ ์ผ์ด์ค๋ฅผ ํต๊ณผํ ์ ์์๋ค!