๐Ÿงฉ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด(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๋ฒˆ์งธ ์œ„์น˜์— ์ €์žฅํ•œ๋‹ค.
  • answer = strings : ์ •๋ ฌ์ด ๋๋‚œ strings ๋ฐฐ์—ด์„ answer์— ์ €์žฅํ•œ๋‹ค.