KDLiam

[Programmers ์ฝ”๋”ฉ ๊ธฐ์ดˆ ํŠธ๋ ˆ์ด๋‹ : Java] ๋Œ€์†Œ๋ฌธ์ž ๋ฐ”๊ฟ”์„œ ์ถœ๋ ฅํ•˜๊ธฐ ๋ณธ๋ฌธ

Problems(Java)/Programmers

[Programmers ์ฝ”๋”ฉ ๊ธฐ์ดˆ ํŠธ๋ ˆ์ด๋‹ : Java] ๋Œ€์†Œ๋ฌธ์ž ๋ฐ”๊ฟ”์„œ ์ถœ๋ ฅํ•˜๊ธฐ

KDLiam 2025. 9. 30. 11:54

๐Ÿ”  ๋Œ€์†Œ๋ฌธ์ž ๋ณ€ํ™˜ (ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 181949๋ฒˆ)

๐Ÿ“Œ ๋ฌธ์ œ ๋งํฌ: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 181949 - ๋Œ€์†Œ๋ฌธ์ž ๋ฐ”๊ฟ”์„œ ์ถœ๋ ฅํ•˜๊ธฐ


๐Ÿ“– ๋ฌธ์ œ ์„ค๋ช…

์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์˜ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ์„œ๋กœ ๋ฐ”๊ฟ”์„œ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.
์˜ˆ: aBcDeFg → AbCdEfG


โœจ ์ฒซ ๋ฒˆ์งธ ํ’€์ด (String ์‚ฌ์šฉ)

 
import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        char c;
        String answer = "";
    
        for(int i=0;i<a.length();i++) {
            c = a.charAt(i);
            if(Character.isUpperCase(c)) {
                answer += Character.toLowerCase(c);
            } else {
                answer += Character.toUpperCase(c);
            }
        }
        System.out.println(answer);   
    }
}

๐Ÿ’ก ํ’€์ด ์•„์ด๋””์–ด

  • Character.isUpperCase() / Character.toLowerCase() ๋ฉ”์„œ๋“œ๋ฅผ ํ™œ์šฉํ•ด ๋Œ€์†Œ๋ฌธ์ž ๋ณ€ํ™˜
  • String์— ๋ฌธ์ž์—ด์„ ๋”ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„

โš ๏ธ ๋ฌธ์ œ์ 

Java์˜ String์€ ๋ถˆ๋ณ€(immutable) ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.
์ฆ‰, ๋ฌธ์ž์—ด์„ ๋”ํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ๊ธฐ์กด ๊ฐ’์€ ๋ฒ„๋ ค์ง‘๋‹ˆ๋‹ค.
๐Ÿ‘‰ ๋ฐ˜๋ณต๋ฌธ์ด ์ปค์งˆ์ˆ˜๋ก ์‹œ๊ฐ„๊ณผ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ์‹ฌํ•ด์ง‘๋‹ˆ๋‹ค.


โœจ ๋‘ ๋ฒˆ์งธ ํ’€์ด (StringBuilder ์‚ฌ์šฉ)

 
import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();

        StringBuilder answer = new StringBuilder();
        
        for(Character c : a.toCharArray()) {
            if(Character.isUpperCase(c)) {
                answer.append(Character.toLowerCase(c));
            } else {
                answer.append(Character.toUpperCase(c));
            }
        }
        System.out.println(answer.toString());
    }
}

๐Ÿ’ก ๊ฐœ์„  ์•„์ด๋””์–ด

  • StringBuilder๋Š” ๊ฐ€๋ณ€(mutable) ๊ฐ์ฒด๋กœ, ๋ฌธ์ž์—ด์„ ์ง์ ‘ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ ๋ฌธ์ž์—ด์„ ๋ถ™์ผ ๋•Œ ์ƒˆ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ๊ธฐ์กด ๋ฒ„ํผ๋ฅผ ์žฌํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.
    ๐Ÿ‘‰ ๋ฐ˜๋ณต๋ฌธ์—์„œ ํšจ์œจ์ !

๐Ÿ“Š ์‹œ๊ฐ„·๊ณต๊ฐ„ ๋ณต์žก๋„ ๋น„๊ต

๋ฐฉ์‹์‹œ๊ฐ„ ๋ณต์žก๋„๊ณต๊ฐ„ ๋ณต์žก๋„์„ค๋ช…
String ์‚ฌ์šฉ O(N²) O(N²) + ์—ฐ์‚ฐ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด ๊ฐ์ฒด ์ƒ์„ฑ
StringBuilder ์‚ฌ์šฉ O(N) O(N) ๋ฒ„ํผ ์žฌํ™œ์šฉ → ์ž…๋ ฅ ํฌ๊ธฐ๋งŒํผ๋งŒ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ

๐Ÿ”‘ StringBuilder๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„ฑ๋Šฅ๊ณผ ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์ด ํฌ๊ฒŒ ๊ฐœ์„ ๋ฉ๋‹ˆ๋‹ค.
์ž…๋ ฅ ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์ฐจ์ด๋Š” ๋”์šฑ ๋‘๋“œ๋Ÿฌ์ง‘๋‹ˆ๋‹ค.