did_story

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / JAVA] JadenCase ๋ฌธ์ž์—ด ๋งŒ๋“ค๊ธฐ ๋ณธ๋ฌธ

Algorithm๐ŸŒŠ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค(Programmers)

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / JAVA] JadenCase ๋ฌธ์ž์—ด ๋งŒ๋“ค๊ธฐ

์–ด์ œ์‹œ์ž‘ 2025. 7. 10. 22:38

 

๋ฌธ์ œ ๋งํฌ: https://school.programmers.co.kr/learn/courses/30/lessons/12951

1. ๋ฌธ์ œ ํƒ์ƒ‰

  • s๋Š” ๊ธธ์ด 1 ์ด์ƒ 200 ์ดํ•˜์ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • s๋Š” ์•ŒํŒŒ๋ฒณ๊ณผ ์ˆซ์ž, ๊ณต๋ฐฑ๋ฌธ์ž(" ")๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ˆซ์ž๋Š” ๋‹จ์–ด์˜ ์ฒซ ๋ฌธ์ž๋กœ๋งŒ ๋‚˜์˜ต๋‹ˆ๋‹ค.
    • ์ˆซ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๋‹จ์–ด๋Š” ์—†์Šต๋‹ˆ๋‹ค.
    • ๊ณต๋ฐฑ๋ฌธ์ž๊ฐ€ ์—ฐ์†ํ•ด์„œ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

2. ํ’€์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜

1) ๋ฌธ์ž์—ด์„ ๋ฌธ์ž(char) ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ํ•œ ๊ธ€์ž์”ฉ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

2) String ๋ฐฐ์—ด์„ ํƒ์ƒ‰ํ•˜๋ฉด์„œ, ์•ž์— ๋นˆ์นธ์ด ์žˆ์„ ์‹œ ๋‹จ์–ด์˜ ์‹œ์ž‘์œ„์น˜๋ผ๊ณ  ํŒ๋‹จ.

  • ๋‹จ์–ด์˜ ์‹œ์ž‘ ๋ฌธ์ž์ผ ๊ฒฝ์šฐ: Character.toUpperCase(c)๋กœ ๋Œ€๋ฌธ์ž ๋ณ€ํ™˜
  • ๋‹จ์–ด์˜ ์ค‘๊ฐ„ ๋ฌธ์ž์ผ ๊ฒฝ์šฐ: Character.toLowerCase(c)๋กœ ์†Œ๋ฌธ์ž ๋ณ€ํ™˜
    • ์‹œ๊ฐ„ ๋ณต์žก๋„: O(N)
  •  

3. ์ •๋‹ต ์ฝ”๋“œ 

// 1 : 2050-2104
class Solution {
    public String solution(String s) {
        StringBuilder sb = new StringBuilder();
        boolean isStart = true;

        for (char c : s.toCharArray()) {
            if (c == ' ') {
                sb.append(c);
                isStart = true;
            } else {
                if (isStart) {
                    sb.append(Character.toUpperCase(c));
                    isStart = false;
                } else {
                    sb.append(Character.toLowerCase(c));
                }
            }
        }

        return sb.toString();
    }
}

// 2. ์ง„์งœ ๋˜‘๋˜‘ํ•œ ์‚ฌ๋žŒ๋“ค์˜ Short ์ฝ”๋“œ๋ฅผ ํ•œ๋ฒˆ ๋‹ค์‹œ ๋งŒ๋“ค์–ด ๋ณด์•˜๋‹ค.
class Solution {
    public String solution(String s) {
        String answer = "";
        String[] sp = s.toLowerCase().split("");
        boolean isBlank = true;

        for (String ss : sp){
            answer += isBlank ? ss.toUpperCase() : ss;
            isBlank = ss.equals(" ") ? true : false;
        }

        return answer;
    }
}

 


4. ๋งˆ์น˜๋ฉฐ.

์ด๋ฒˆ ๋ฌธ์ œ๋Š” ์ฒ˜์Œ ๋ฌธ์ œ ์„ค๋ช…์„ ์ฝ์ž๋งˆ์ž, ๋ฌธ์ž์—ด์„ ๋ฌธ์ž ๋‹จ์œ„๋กœ ํƒ์ƒ‰ํ•˜๋ฉด์„œ ๋‹จ์–ด์˜ ์‹œ์ž‘์„ ํŒ๋‹จํ•˜๋Š” ๋ฐฉ์‹์ด ๋– ์˜ฌ๋ž์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ๊ณต๋ฐฑ์ด ์—ฐ์†์œผ๋กœ ๋“ฑ์žฅํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ, ๋‹จ์ˆœํžˆ split์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๋ฐฉ์‹๋ณด๋‹ค๋Š” ๋ฌธ์ž ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ ์ง์ ‘ ํƒ์ƒ‰ํ•˜๋ฉด์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒŒ ๋” ์ ์ ˆํ•˜๋‹ค๊ณ  ํŒ๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ˆซ์ž๋Š” ๋Œ€์†Œ๋ฌธ์ž ๋ณ€ํ™˜์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์—ˆ๊ธฐ์— ์ ์ ˆํ•œ ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ์„ ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋นˆ๋‹ค. ๋ฌธ์ž์—ด ์กฐํ•ฉ์—๋Š” ์„ฑ๋Šฅ์„ ๊ณ ๋ คํ•ด์„œ StringBuilder๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด ๋ง์…ˆ(+)๋ณด๋‹ค ํ›จ์”ฌ ํšจ์œจ์ ์ด๋‹ˆ๊นŒ์š”. ๊ฐœ์ธ์ ์œผ๋กœ๋Š” ์ด๋Ÿฐ ๋ฌธ์ž์—ด ํƒ์ƒ‰ ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ, ๋‹จ์ˆœ split ๋ฐฉ์‹์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ๋ฌธ์ž ๋‹จ์œ„๋กœ ์ง์ ‘ ์ฒ˜๋ฆฌํ•˜๋Š” ์Šต๊ด€์ด ์ค‘์š”ํ•œ ๊ฒƒ ๊ฐ™์•„์š”. ๋ฌธ์ œ ์กฐ๊ฑด์„ ์ •ํ™•ํžˆ ์ดํ•ดํ•˜๊ณ  ๋‚˜๋ฉด ์˜คํžˆ๋ ค ๋” ๋‹จ์ˆœํ•˜๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค.