๐งฉ ํ๋ก๊ทธ๋๋จธ์ค/์๊ณ ๋ฆฌ์ฆ ํ์ด(Java)
ํ๋ก๊ทธ๋๋จธ์ค_๋ฌธ์์ด ๋ด ๋ง์๋๋ก ์ ๋ ฌํ๊ธฐ
carrot0911
2024. 12. 3. 09:58
๋ฌธ์ ์ค๋ช
https://school.programmers.co.kr/learn/courses/30/lessons/12915
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
๋ฌธ์์ด๋ก ๊ตฌ์ฑ๋ ๋ฆฌ์คํธ strings์, ์ ์ n์ด ์ฃผ์ด์ก์ ๋, ๊ฐ ๋ฌธ์์ด์ ์ธ๋ฑ์ค n๋ฒ์งธ ๊ธ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๋ ค ํฉ๋๋ค. ์๋ฅผ ๋ค์ด strings๊ฐ ["sun", "bed", "car"]์ด๊ณ n์ด 1์ด๋ฉด ๊ฐ ๋จ์ด์ ์ธ๋ฑ์ค 1์ ๋ฌธ์ "u", "e", "a"๋ก strings๋ฅผ ์ ๋ ฌํฉ๋๋ค.
์ ํ ์ฌํญ
- strings๋ ๊ธธ์ด 1 ์ด์, 50 ์ดํ์ธ ๋ฐฐ์ด์ ๋๋ค.
- strings์ ์์๋ ์๋ฌธ์ ์ํ๋ฒณ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- strings์ ์์๋ ๊ธธ์ด 1 ์ด์, 100 ์ดํ์ธ ๋ฌธ์์ด์ ๋๋ค.
- ๋ชจ๋ strings์ ์์์ ๊ธธ์ด๋ n๋ณด๋ค ํฝ๋๋ค.
- ์ธ๋ฑ์ค 1์ ๋ฌธ์๊ฐ ๊ฐ์ ๋ฌธ์์ด์ด ์ฌ๋ฟ์ผ ๊ฒฝ์ฐ, ์ฌ์ ์์ผ๋ก ์์ ๋ฌธ์์ด์ด ์์ชฝ์ ์์นํฉ๋๋ค.
์ ์ถ๋ ฅ ์
strings | n | return |
["sun", "bed", "car"] | 1 | ["car", "bed", "sun"] |
["abce", "abcd", "cdx"] | 2 | ["abcd", "abce", "cdx"] |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
- "sun", "bed", "car"์ 1๋ฒ์งธ ์ธ๋ฑ์ค ๊ฐ์ ๊ฐ๊ฐ "u", "e", "a"์ ๋๋ค. ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก strings๋ฅผ ์ ๋ ฌํ๋ฉด ["car", "bed", "sun"]์ ๋๋ค.
์ ์ถ๋ ฅ ์ #2
- "abce"์ "abcd", "cdx"์ 2๋ฒ์งธ ์ธ๋ฑ์ค ๊ฐ์ "c", "c", "x"์ ๋๋ค. ๋ฐ๋ผ์ ์ ๋ ฌ ํ์๋ "cdx"๊ฐ ๊ฐ์ฅ ๋ค์ ์์นํฉ๋๋ค. "abce"์ "abcd"๋ ์ฌ์ ์์ผ๋ก ์ ๋ ฌํ๋ฉด "abcd"๊ฐ ์ฐ์ ํ๋ฏ๋ก, ๋ต์ ["abcd", "abce", "cdx"]์ ๋๋ค.
๋ด๊ฐ ์์ฑํ ์ฝ๋
class Solution {
public String[] solution(String[] strings, int n) {
String[] answer = new String[strings.length];
for (int i = 0; i < strings.length - 1; i++) {
for (int j = i + 1; j < strings.length; j++) {
char c1 = strings[i].charAt(n);
char c2 = strings[j].charAt(n);
if (c1 > c2 || (c1 == c2 && strings[i].compareTo(strings[j]) > 0)) {
String temp = strings[i];
strings[i] = strings[j];
strings[j] = temp;
}
}
}
answer = strings;
return answer;
}
}
์ฝ๋ ์ค๋ช
- for (int i = 0; i < strings.length - 1; i++) { } : ์ฒซ๋ฒ์งธ for๋ฌธ์ ํตํด strings ๋ฐฐ์ด์ ์์๋ฅผ ์ํํ๋ค. ๋น๊ต ๋์์ด ๋ ์ฒซ ๋ฒ์งธ ๋ฌธ์์ด์ ์ธ๋ฑ์ค๋ฅผ ์๋ฏธํ๋ค.
- for (int j = i+1; j < strings.length; j++) { } : ๋๋ฒ์งธ for๋ฌธ์ ํตํด strings ๋ฐฐ์ด์ ์์๋ฅผ ์ํํ๋ค. ๋น๊ต ๋์์ด ๋ ๋ ๋ฒ์งธ ๋ฌธ์์ด์ ์ธ๋ฑ์ค๋ฅผ ์๋ฏธํ๋ค.
- char c1 = strings[i].charAt(n) : strings ๋ฐฐ์ด์์ i๋ฒ์งธ ๋ฌธ์์ด์ n๋ฒ์งธ ๋ฌธ์ ๊ฐ์ c1 ๋ณ์์ ์ ์ฅํ๋ค.
- char c2 = strings[j].charAt(n) : strings ๋ฐฐ์ด์์ j๋ฒ์งธ ๋ฌธ์์ด์ n๋ฒ์งธ ๋ฌธ์ ๊ฐ์ c2 ๋ณ์์ ์ ์ฅํ๋ค.
- if (c1 > c2 || (c1 == c2 && strings[i].compareTo(strings[j]) > 0)) { } : if๋ฌธ์ ์ฌ์ฉํด์ ๋ ๋ฌธ์๋ฅผ ๋น๊ตํ๋ค. c1์ ๊ฐ์ด c2๋ณด๋ค ํฌ๊ฑฐ๋ c1๊ณผ c2์ ๊ฐ์ด ๊ฐ๊ณ strings[i]๊ฐ strings[j]๋ณด๋ค ํฌ๋ค๋ฉด ๋ ๋ฌธ์์ด์ ์์น๋ฅผ ๋ฐ๊พผ๋ค.
- String temp = strings[i] : ์์ ๋ณ์ temp์ ๋ฌธ์์ด strings[i]๋ฅผ ์ ์ฅํ๋ค.
- strings[i] = strings[j] : strings[i] ์์น์ strings[j] ๊ฐ์ ์ ์ฅํ๋ค.
- strings[j] = temp : strings[j] ์์น์ temp ๊ฐ์ ์ ์ฅํ์ฌ ์๋ i๋ฒ์งธ ๋ฌธ์์ด์ j๋ฒ์งธ ์์น์ ์ ์ฅํ๋ค.
- for (int j = i+1; j < strings.length; j++) { } : ๋๋ฒ์งธ for๋ฌธ์ ํตํด strings ๋ฐฐ์ด์ ์์๋ฅผ ์ํํ๋ค. ๋น๊ต ๋์์ด ๋ ๋ ๋ฒ์งธ ๋ฌธ์์ด์ ์ธ๋ฑ์ค๋ฅผ ์๋ฏธํ๋ค.
- answer = strings : ์ ๋ ฌ์ด ๋๋ strings ๋ฐฐ์ด์ answer์ ์ ์ฅํ๋ค.