๐Ÿ”ฅ[99ํด๋Ÿฝ ์ฝ”ํ…Œ ์Šคํ„ฐ๋””] 4์ผ์ฐจ TIL - JadenCase ๋ฌธ์ž์—ด ๋งŒ๋“ค๊ธฐ

HOONSSACยท2024๋…„ 7์›” 25์ผ
1

99Club Coding Test Study

๋ชฉ๋ก ๋ณด๊ธฐ
4/41
post-thumbnail

โณ๋ฌธ์ œ

๋ฌธ์ œ ์„ค๋ช…

JadenCase๋ž€ ๋ชจ๋“  ๋‹จ์–ด์˜ ์ฒซ ๋ฌธ์ž๊ฐ€ ๋Œ€๋ฌธ์ž์ด๊ณ , ๊ทธ ์™ธ์˜ ์•ŒํŒŒ๋ฒณ์€ ์†Œ๋ฌธ์ž์ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค. ๋‹จ, ์ฒซ ๋ฌธ์ž๊ฐ€ ์•ŒํŒŒ๋ฒณ์ด ์•„๋‹ ๋•Œ์—๋Š” ์ด์–ด์ง€๋Š” ์•ŒํŒŒ๋ฒณ์€ ์†Œ๋ฌธ์ž๋กœ ์“ฐ๋ฉด ๋ฉ๋‹ˆ๋‹ค. (์ฒซ ๋ฒˆ์งธ ์ž…์ถœ๋ ฅ ์˜ˆ ์ฐธ๊ณ )
๋ฌธ์ž์—ด s๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, s๋ฅผ JadenCase๋กœ ๋ฐ”๊พผ ๋ฌธ์ž์—ด์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ ์กฐ๊ฑด

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

์ž…์ถœ๋ ฅ ์˜ˆ

sreturn
"3people unFollowed me""3people Unfollowed Me"
"for the last week""For The Last Week"

โœ๏ธํ’€์ด

์ฒซ ๋ฒˆ์งธ ์‹œ๋„

import java.util.*;

class Solution {
    public StringBuilder solution(String s) {
        StringBuilder modifiedString = new StringBuilder();
        
        String[] tmp = s.split(" ");
        
        for (int j = 0; j < tmp.length; j++) {
            
            char first = tmp[j].charAt(0);
            if (Character.isDigit(first) || Character.isUpperCase(first)){
                modifiedString.append(first);
            }
            else {
                modifiedString.append(Character.toUpperCase(first));
            }
            for (int i = 1; i < tmp[j].length(); i++) {
                modifiedString.append(Character.toLowerCase(tmp[j].charAt(i)));
            }
            
            modifiedString.append(" ");
        }
        modifiedString.deleteCharAt(modifiedString.length() - 1);
        
        return modifiedString;
    }
}

์ผ๋‹จ, ๋‹จ์–ด์˜ ์ฒซ ๋ฒˆ์งธ ๊ธ€์ž์— ๋Œ€ํ•œ ๊ฒฝ์šฐ๋ฅผ ๋‚˜๋ˆ„์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ž์—ด์„ ๋‚˜๋ˆ„์–ด ๋ฐฐ์—ด์— ๋‹ด์•„์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.
๊ทธ๋ž˜์„œ split()ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฌธ์ž์—ด์„ ๊ณต๋ฐฑ์„ ๊ธฐ์ค€์œผ๋กœ ๋ถ„ํ• ํ•ด ๋ฐฐ์—ด์— ๋‹ด์•˜๊ณ , 0๋ฒˆ์งธ ์ธ๋ฑ์Šค๊ฐ€ ์ˆซ์ž์ธ ๊ฒฝ์šฐ, ๋Œ€๋ฌธ์ž์ธ ๊ฒฝ์šฐ, ์†Œ๋ฌธ์ž์ธ ๊ฒฝ์šฐ๋กœ ๋‚˜๋ˆ„์—ˆ๋‹ค.
์ˆซ์ž๋‚˜ ๋Œ€๋ฌธ์ž์ธ ๊ฒฝ์šฐ์—๋Š” ๋”ฐ๋กœ ๋ณ€ํ™˜ํ•ด ์ค„ ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์—, ๊ทธ๋Œ€๋กœ modifiedString์— ๋‹ด์•„์ฃผ์—ˆ๊ณ , ์†Œ๋ฌธ์ž์ธ ๊ฒฝ์šฐ์—๋Š” toLowerCase()ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜์‹œ์ผœ ์ค€ ํ›„ modifiedString์— append๋ฅผ ํ•ด์ฃผ์—ˆ๋‹ค.

๋ฌธ์ œ ๋ฐœ๊ฒฌ

๊ทธ๋žฌ๋”๋‹ˆ ๊ฑฐ์˜ ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ์‹คํŒจํ•˜์˜€๊ณ ,

์›์ธ์„ ์ฐพ์•„๋ณด๋‹ˆ ๋ฌธ์ œ ์ž…๋ ฅ ์กฐ๊ฑด ์ค‘ ๊ณต๋ฐฑ ๋ฌธ์ž๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ํฌํ•จ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๋Š” ๊ฑธ ์•Œ์•˜๋‹ค.

๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ๋ชจ์ƒ‰ํ•˜๋‹ค๊ฐ€ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋กœ ๊ฒฐ๊ตญ GPT์˜ ํž˜์„ ๋นŒ๋ ค ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ฐพ๊ฒŒ ๋˜์—ˆ๋‹ค๐Ÿ˜ญ

์ตœ์ข… ์ฝ”๋“œ

class Solution {
    public StringBuilder solution(String s) {
        StringBuilder modifiedString = new StringBuilder();
        
        // ์ž…๋ ฅ ๋ฌธ์ž์—ด์ด ๋น„์–ด ์žˆ๋Š”์ง€ ํ™•์ธ
        if (s == null || s.isEmpty()) {
            return modifiedString; // ๋นˆ ๋ฌธ์ž์—ด์ผ ๊ฒฝ์šฐ ๋นˆ StringBuilder ๋ฐ˜ํ™˜
        }
        
        boolean isPreviousSpace = true; // ์ด์ „ ๋ฌธ์ž๊ฐ€ ๊ณต๋ฐฑ์ธ์ง€ ์—ฌ๋ถ€
        for (char c : s.toCharArray()) {
            if (Character.isWhitespace(c)) {
                modifiedString.append(c); // ๊ณต๋ฐฑ์€ ๊ทธ๋Œ€๋กœ ์ถ”๊ฐ€
                isPreviousSpace = true; // ํ˜„์žฌ ๋ฌธ์ž๊ฐ€ ๊ณต๋ฐฑ์ž„์„ ๊ธฐ๋ก
            } else {
                if (isPreviousSpace) {
                    // ์ด์ „ ๋ฌธ์ž๊ฐ€ ๊ณต๋ฐฑ์ผ ๊ฒฝ์šฐ, ์ฒซ ๊ธ€์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜
                    modifiedString.append(Character.toUpperCase(c));
                } else {
                    // ์ฒซ ๊ธ€์ž๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜
                    modifiedString.append(Character.toLowerCase(c));
                }
                isPreviousSpace = false; // ํ˜„์žฌ ๋ฌธ์ž๊ฐ€ ๊ณต๋ฐฑ์ด ์•„๋‹˜์„ ๊ธฐ๋ก
            }
        }
        
        return modifiedString;
    }
}

์ด ๋ฐฉ๋ฒ•์„ ์ฒ˜์Œ์— ๋”ฑ ๋ณด๊ณ  ๋‹จ์–ด์˜ ๋งจ ์•ž๊ธ€์ž๋ฅผ ์ด๋ ‡๊ฒŒ๋„ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๊ตฌ๋‚˜..์‹ถ์€ ์ƒ๊ฐ์ด ๋“ฆ๊ณผ ๋™์‹œ์— ๋‚˜์˜ ์ด ์ข์€ ์‹œ์•ผ์— ๋Œ€ํ•œ ํ˜„ํƒ€๊ฐ€ ์‚ด์ง ์™”๋‹ค.

๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•˜๋‹ค. ์šฐ์„  ์ž…๋ ฅ ๋ฌธ์ž์—ด์ด ๋ชจ๋‘ ๊ณต๋ฐฑ์ด๊ฑฐ๋‚˜ ๋น„์–ด ์žˆ๋Š” ์ง€ ํ™•์ธ์„ ํ•ด์ค€๋‹ค.

์ด์ œ ํ˜„์žฌ ๋ฌธ์ž๊ฐ€ ๋‹จ์–ด์˜ ๋งจ ์•ž๊ธ€์ž์ธ์ง€ ํŒ๋‹จ์„ ํ•ด์ค˜์•ผ ํ•˜๋Š”๋ฐ,
์—ฌ๊ธฐ์„œ ์ด์ „ ๋ฌธ์ž๊ฐ€ ๊ณต๋ฐฑ์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ์ €์žฅํ•˜๋Š” boolean ๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜ ์„ ์–ธํ•ด ์ค€๋‹ค.
์™œ๋ƒํ•˜๋ฉด, ์ด์ „ ๋ฌธ์ž๊ฐ€ ๊ณต๋ฐฑ์ด๋ฉด ํ˜„์žฌ ๋ฌธ์ž๋Š” ๋ฌด์กฐ๊ฑด ๋‹จ์–ด์˜ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์ด๊ธฐ ๋–„๋ฌธ์ด๋‹ค.

์ด์ œ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฆฌ๋ฉด์„œ ํ˜„์žฌ ๋ฌธ์ž๊ฐ€ isWhitespace์ฆ‰, ๊ณต๋ฐฑ์ด๋ผ๋ฉด, ๊ทธ ๊ณต๋ฐฑ์€ ๊ทธ๋Œ€๋กœ ์ตœ์ข… ๋ฌธ์ž์—ด modifiedString์— ์ €์žฅํ•ด์ฃผ๊ณ , ํ˜„์žฌ ๋ฌธ์ž๊ฐ€ ๊ณต๋ฐฑ์ž„์„ ๊ธฐ๋กํ•ด ์ค€๋‹ค.

๋งŒ์•ฝ, ๊ณต๋ฐฑ์ด ์•„๋‹ˆ๋ผ๋ฉด, ํ˜„์žฌ ์ด ๋ฌธ์ž c๋Š” ๋‹จ์–ด์˜ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์ด๊ฑฐ๋‚˜, ๊ทธ ๋’ค์˜ ๋ฌธ์ž์ผ ๊ฒƒ์ด๋‹ค.
์ด ๋‘๊ฐ€์ง€์˜ ๊ฒฝ์šฐ๋Š” ์ด์ „ ๋ฌธ์ž๊ฐ€ ๊ณต๋ฐฑ์ธ์ง€ ์•„๋‹Œ์ง€์˜ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๊ฐˆ๋ฆฐ๋‹ค.
์ฆ‰, isPreviousSpace๊ฐ€ True์ธ ๊ฒฝ์šฐ์—๋Š” c๊ฐ€ ๋‹จ์–ด์˜ ๋งจ ์•ž ๋ฌธ์ž๋ผ๋Š” ๋œป์ด๊ธฐ ๋–„๋ฌธ์— ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•ด์„œ modifiedString์— ์ €์žฅ์„ ํ•ด ์ฃผ๊ณ ,
isPreviousSpace๊ฐ€ False์ธ ๊ฒฝ์šฐ์—๋Š” c๊ฐ€ ๋‹จ์–ด์˜ ๋งจ ์•ž ๋ฌธ์ž๋Š” ์•„๋‹ˆ๊ณ , ๊ทธ ๋’ค ์–ด๋”˜๊ฐ€์˜ ๋ฌธ์ž๋ผ๋Š” ๋œป์ด๊ธฐ ๋•Œ๋ฌธ์— ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•ด์„œ modifiedString์— ์ €์žฅ์„ ํ•ด์ค€๋‹ค.

์ด๋ ‡๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋ฉด ์ž…๋ ฅ ๋ฌธ์ž์˜ ๊ณต๋ฐฑ ์œ„์น˜๋‚˜ ๊ฐœ์ˆ˜๋ฅผ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ ๊ฐ’์— ์˜ฎ๊ธธ ์ˆ˜ ์žˆ์„ ๋ฟ๋”๋Ÿฌ, ๋ฌธ์ œ ์กฐ๊ฑด๋„ ๋ชจ๋‘ ๋งŒ์กฑ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ”—๋ฌธ์ œ ๋งํฌ
๐Ÿ’ปRepository

profile
ํ›ˆ์‹น์˜ ๊ฐœ๋ฐœ์—ฌํ–‰

1๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2024๋…„ 7์›” 25์ผ

๐Ÿ‘

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ