Problem ๐Ÿ’ป

https://school.programmers.co.kr/learn/courses/30/lessons/120849

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

 

๋ฌธ์ œ ์„ค๋ช…

์˜์–ด์—์„  a, e, i, o, u ๋‹ค์„ฏ ๊ฐ€์ง€ ์•ŒํŒŒ๋ฒณ์„ ๋ชจ์Œ์œผ๋กœ ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด my_string์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ ๋ชจ์Œ์„ ์ œ๊ฑฐํ•œ ๋ฌธ์ž์—ด์„ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.


์ œํ•œ์‚ฌํ•ญ
  • my_string์€ ์†Œ๋ฌธ์ž์™€ ๊ณต๋ฐฑ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • 1 ≤ my_string์˜ ๊ธธ์ด ≤ 1,000

์ž…์ถœ๋ ฅ ์˜ˆmy_stringresult
"bus" "bs"
"nice to meet you" "nc t mt y"

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • "bus"์—์„œ ๋ชจ์Œ u๋ฅผ ์ œ๊ฑฐํ•œ "bs"๋ฅผ returnํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • "nice to meet you"์—์„œ ๋ชจ์Œ i, o, e, u๋ฅผ ๋ชจ๋‘ ์ œ๊ฑฐํ•œ "nc t mt y"๋ฅผ returnํ•ฉ๋‹ˆ๋‹ค.

Approach 1 โŒ - ๋‚˜์˜ ์ž˜๋ชป๋œ ์ฝ”๋“œ

class Solution {
    public String solution(String my_string) {
        StringBuilder sb = new StringBuilder(my_string);
        for (int i = 0; i < sb.length(); i++) {
           if (charAt(i) == 'i') {
               sb.deleteCharAt(i);
           } else if (charAt(i) == 'o' ) {
               sb.deleteCharAt(i) ;
               } else if (charAt(i) == 'e') {
               sb.deleteCharAt(i);
           } else (charAt(i) == 'u') {
               sb.deleteCharAt(i);
           }
           }
        
        return sb;
        }
        
    }
}

Approach 2 โญ• - ๋‚˜์˜ ํ’€์ด ๊ต์ •

์ฃผ์š” ๋ฌธ์ œ์ 

1. charAt(i) ํ˜ธ์ถœ ์˜ค๋ฅ˜

charAt(i)๋Š” sb.charAt(i)๋กœ ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹ค.

ํ˜„์žฌ charAt(i)๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•˜๊ณ  ์žˆ์–ด ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

charAt(i)๋Š” String ํด๋ž˜์Šค์™€ StringBuilder ํด๋ž˜์Šค์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฉ”์„œ๋“œ๋กœ,
ํ•ด๋‹น ๊ฐ์ฒด์˜ ํŠน์ • ์ธ๋ฑ์Šค์— ์žˆ๋Š” ๋ฌธ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
๋”ฐ๋ผ์„œ ๋ฌธ์ž์—ด(String)์ด๋‚˜ StringBuilder ๊ฐ์ฒด์— ๋Œ€ํ•ด์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

๋ฐฐ์—ด์—์„œ๋Š” charAt(i)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
๋Œ€์‹ , ๋ฐฐ์—ด์˜ ํŠน์ • ์ธ๋ฑ์Šค์— ์ ‘๊ทผํ•˜๋ ค๋ฉด ๋ฐฐ์—ด์˜ ์ด๋ฆ„๊ณผ ๋Œ€๊ด„ํ˜ธ([])๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค.

charAt(i) ์‚ฌ์šฉ ๊ฐ€๋Šฅ ๋Œ€์ƒ

1. String ํด๋ž˜์Šค
• ์„ค๋ช…: ๋ฌธ์ž์—ด์—์„œ ํŠน์ • ์ธ๋ฑ์Šค์˜ ๋ฌธ์ž๋ฅผ ๋ฐ˜ํ™˜.
• ์˜ˆ์ œ:
String str = "hello";
char c = str.charAt(1); // 'e'
System.out.println(c); // ์ถœ๋ ฅ: eโ€‹

2. StringBuilder ํด๋ž˜์Šค
• ์„ค๋ช…: StringBuilder ๊ฐ์ฒด์—์„œ ํŠน์ • ์ธ๋ฑ์Šค์˜ ๋ฌธ์ž๋ฅผ ๋ฐ˜ํ™˜.
• ์˜ˆ์ œ:
StringBuilder sb = new StringBuilder("world");
char c = sb.charAt(2); // 'r'
System.out.println(c); // ์ถœ๋ ฅ: rโ€‹

-----
๋ฐฐ์—ด์—์„œ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•

๋ฐฐ์—ด์€ charAt(i)๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค.
๋ฐฐ์—ด์˜ ํŠน์ • ์š”์†Œ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๋ ค๋ฉด ๋ฐฐ์—ด์˜ ์ด๋ฆ„๊ณผ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

1. ๋ฌธ์ž ๋ฐฐ์—ด (char[])
• ์˜ˆ์ œ:
char[] charArray = {'h', 'e', 'l', 'l', 'o'};
char c = charArray[1]; // 'e'
System.out.println(c); // ์ถœ๋ ฅ: eโ€‹

2. ๋ฌธ์ž์—ด ๋ฐฐ์—ด (String[])
• ์˜ˆ์ œ:
String[] stringArray = {"apple", "banana", "cherry"};
String s = stringArray[1]; // "banana"
System.out.println(s); // ์ถœ๋ ฅ: bananaโ€‹

 

 

2. deleteCharAt(i) ์‚ฌ์šฉ ์‹œ ์ธ๋ฑ์Šค ๋ฌธ์ œ

StringBuilder์—์„œ deleteCharAt(i)๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ ์ค„์–ด๋“ค๋ฉด์„œ ์ธ๋ฑ์Šค๊ฐ€ ๋ณ€๊ฒฝ๋œ๋‹ค.

๋ฐ˜๋ณต๋ฌธ์—์„œ ์ธ๋ฑ์Šค๋ฅผ ์กฐ์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์ผ๋ถ€ ๋ฌธ์ž๊ฐ€ ์Šคํ‚ต๋  ์ˆ˜ ์žˆ๋‹ค.

 

3. else ๋ฌธ๋ฒ• ์˜ค๋ฅ˜

else if๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ณณ์— ์ž˜๋ชป๋œ else ๋ธ”๋ก์ด ์žˆ๋‹ค.

 

4. ์ค‘๋ณต ์ฝ”๋“œ

๊ฐ ๋ชจ์Œ์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ๋น„ํšจ์œจ์ ์ด๋‹ค. ์กฐ๊ฑด์„ ํ•˜๋‚˜๋กœ ํ•ฉ์น  ์ˆ˜ ์žˆ๋‹ค.

 

5. ๋ฐ˜ํ™˜ ํƒ€์ž… ์˜ค๋ฅ˜

return sb๋Š” StringBuilder ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ, ๋ฉ”์„œ๋“œ ๋ฐ˜ํ™˜ ํƒ€์ž…์€ String์ด๋ฏ€๋กœ ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. 

sb.toString()์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•œ๋‹ค.


Solution ๐Ÿ’ก

class Solution {
   public String solution(String my_string) {
       // ์ œ๊ฑฐํ•  ๋ชจ์Œ์„ ๋ฌธ์ž์—ด๋กœ ์ •์˜
       String vowels = "aeiou";
       StringBuilder sb = new StringBuilder();
       
       //์ž…๋ ฅ ๋ฌธ์ž์—ด์„ ํ•œ ๊ธ€์ž์”ฉ ํ™•์ธ
       for (char c : my_string.toCharArray()) {
           // ๋ชจ์Œ์ด ์•„๋‹Œ ๊ฒฝ์šฐ StringBuilder์— ์ถ”๊ฐ€
           if (!vowels.contains(String.valueOf(c))){
               sb.append(c);
           }
       }
       
       //์ตœ์ข… ๋ฌธ์ž์—ด ๋ฐ˜ํ™˜
       return sb.toString();
   }
}

 

๊ฐœ์„  ์‚ฌํ•ญ 

1. ๋ชจ์Œ ์ง‘ํ•ฉ์œผ๋กœ ์กฐ๊ฑด ๋‹จ์ˆœํ™”

  • String vowels = "aeiou";๋กœ ๋ชจ์Œ์„ ์ •์˜ํ•˜๊ณ , ๊ฐ ๋ฌธ์ž๊ฐ€ ๋ชจ์Œ์ธ์ง€ contains()๋กœ ํ™•์ธํ•œ๋‹ค.

  • ์กฐ๊ฑด๋ฌธ์ด ๊ฐ„๊ฒฐํ•ด์ง€๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์›Œ์ง„๋‹ค.

2. deleteCharAt ๋Œ€์‹  StringBuilder.append ์‚ฌ์šฉ

ํŠน์ • ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋Œ€์‹ , ๋ชจ์Œ์ด ์•„๋‹Œ ๋ฌธ์ž๋ฅผ StringBuilder์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜๋ณต๋ฌธ์—์„œ ์ธ๋ฑ์Šค๋ฅผ ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†์–ด์ง‘๋‹ˆ๋‹ค.

3. ํšจ์œจ์ ์ธ ๋ฌธ์ž์—ด ์ƒ์„ฑ

StringBuilder๋Š” ๋ฌธ์ž์—ด ์ถ”๊ฐ€๊ฐ€ ํšจ์œจ์ ์ด๋ฉฐ, ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ toString()์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.


Reference ๐Ÿ“„

+ Recent posts