[TIL] (230912) ๐Ÿค”replaceAll()๊ณผ replace(), substring()์˜ ์‚ฌ์šฉ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž(feat.์ฝ”๋”ฉํ…Œ์ŠคํŠธ)

Noh Jihyeonยท2023๋…„ 9์›” 12์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
23/49
post-thumbnail

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ์ข€ ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์˜ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•ด๋ดค๋‹ค.
์–ด๋–ค ๋ฉ”์„œ๋“œ๋ฅผ ์–ด๋–จ๋•Œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ๊ณ ๋ฏผํ•ด๋ณด๊ณ  ๊ฐ๊ฐ์˜ ์ •์˜์™€ ์žฅ๋‹จ์ ์„ ์‚ดํŽด๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณด์ž!

๐Ÿ”ธ๋ฌธ์ œ์ 


๋ฌธ์ œ: https://school.programmers.co.kr/learn/courses/30/lessons/12948

์ œ์‹œ๋œ "ํ•ธ๋“œํฐ ๋ฒˆํ˜ธ ๊ฐ€๋ฆฌ๊ธฐ" ๋ฌธ์ œ์— ๋Œ€ํ•œ ํšจ์œจ์ ์ธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๊ณ ๋ฏผํ•ด๋ณด์•˜๋‹ค.





๐Ÿ”ธ์‹œ๋„ํ•ด๋ณธ ๊ฒƒ๋“ค

โœ… ๋‚ด ํ’€์ด(์ตœ์ข…์ฝ”๋“œ)


Java๋ฅผ ์‚ฌ์šฉํ•œ ๊ฐ„๋‹จํ•œ ํ•ด๊ฒฐ์ฑ…์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.


class Solution {
    public String solution(String phone_number) {
        String answer = "";
        int phoneLength = phone_number.length();  
        
        answer = "*".repeat(phoneLength-4);
        answer += phone_number.substring(phone_number.length()-4);
        return answer;
    }
}



โ“ ์ฒซ ์‹œ๋„์˜ ๊ณ ๋ฏผ์ 
์ฒ˜์Œ์—๋Š” ๋‹จ์ˆœํ•œ ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ฃผ์–ด์ง„ ๊ฐ’์ด ์ตœ๋Œ€ 20์ž๊นŒ์ง€ ๋˜๊ณ , ๋ฌธ์ œ๊ฐ€ ๊ฐ„๋‹จํ•˜๊ธฐ ๋•Œ๋ฌธ์— "๋งˆ์Šคํ‚น('*') ์ฒ˜๋ฆฌ๋งŒ ํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™์€๋ฐ, ๋ฐ˜๋ณต๋ฌธ์„ ๊ผญ ๋Œ๋ ค์•ผ ํ• ๊นŒ?"๋ผ๋Š” ์˜๋ฌธ์ด ๋“ค์–ด์„œ ๋ฌธ์ž์—ด์„ ๋Œ€์ฒดํ•˜๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์•˜๋‹ค.




1. replaceAll()๊ณผ replace() ๋ฉ”์„œ๋“œ

replaceAll()๊ณผ replace()๋Š” ๋ฌธ์ž์—ด์—์„œ ํŠน์ • ํŒจํ„ด์„ ์ฐพ์•„ ๋‹ค๋ฅธ ๋ฌธ์ž์—ด๋กœ ๋Œ€์ฒดํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๋‘ ๋ฉ”์„œ๋“œ์—๋Š” ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.


  1. replaceAll() ๋ฉ”์„œ๋“œ:
  • ๋ฌธ๋ฒ•: replaceAll(String regex, String replacement)
  • ๊ธฐ๋Šฅ: ์ฃผ์–ด์ง„ ์ •๊ทœ ํ‘œํ˜„์‹(regex)๊ณผ ์ผ์น˜ํ•˜๋Š” ๋ชจ๋“  ๋ถ€๋ถ„์„ ์ฐพ์•„ replacement๋กœ ๋Œ€์ฒดํ•œ๋‹ค.
  • ์˜ˆ์‹œ:์œ„ ์˜ˆ์‹œ์—์„œ "o"๋ผ๋Š” ์ •๊ทœ ํ‘œํ˜„์‹๊ณผ ์ผ์น˜ํ•˜๋Š” ๋ชจ๋“  ๋ถ€๋ถ„์ด "*"๋กœ ๋Œ€์ฒด๋˜์–ด ์ถœ๋ ฅ๋œ๋‹ค.
  • ์ฃผ์˜์‚ฌํ•ญ:
    • replaceAll() ๋ฉ”์„œ๋“œ๋Š” ์ •๊ทœ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŒจํ„ด์ด ๋ณต์žกํ•  ์ˆ˜ ์žˆ๋‹ค.
      ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ž์—ด ๋Œ€์ฒด๋ฅผ ์œ„ํ•ด์„œ๋Š” replace() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ํŽธ๋ฆฌํ•˜๋‹ค.







  1. replace() ๋ฉ”์„œ๋“œ:
  • ๋ฌธ๋ฒ•: replace(CharSequence target, CharSequence replacement)
  • ๊ธฐ๋Šฅ: ์ฃผ์–ด์ง„ ๋Œ€์ƒ ๋ฌธ์ž์—ด(target)๊ณผ ์ผ์น˜ํ•˜๋Š” ๋ชจ๋“  ๋ถ€๋ถ„์„ ์ฐพ์•„ replacement๋กœ ๋Œ€์ฒดํ•œ๋‹ค.
  • ์˜ˆ์‹œ:์œ„ ์˜ˆ์‹œ์—์„œ "o"๋ผ๋Š” ๋Œ€์ƒ ๋ฌธ์ž์—ด๊ณผ ์ผ์น˜ํ•˜๋Š” ๋ชจ๋“  ๋ถ€๋ถ„์ด "*"๋กœ ๋Œ€์ฒด๋˜์–ด ์ถœ๋ ฅ๋œ๋‹ค.
String str = "Hello, World!"; 
String replaced = str.replace("o", "\*");
System.out.println(replaced); // Hell\*, W\*rld!
  • ์ฃผ์˜์‚ฌํ•ญ:
    • replace() ๋ฉ”์„œ๋“œ๋Š” ์ •๊ทœ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ฐ„๋‹จํ•œ ๋ฌธ์ž์—ด ๋Œ€์ฒด์— ์ ํ•ฉํ•˜๋‹ค.
      ๋ฌธ์ž์—ด ๋‚ด์—์„œ ํŠน์ • ๋ฌธ์ž ๋˜๋Š” ๋ฌธ์ž์—ด์„ ๋Œ€์ฒดํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.



๋”ฐ๋ผ์„œ, replaceAll() ๋ฉ”์„œ๋“œ๋Š” ์ •๊ทœ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด์„ ๋Œ€์ฒดํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋ฉฐ, replace() ๋ฉ”์„œ๋“œ๋Š” ๋‹จ์ˆœํžˆ ํŠน์ • ๋ฌธ์ž ๋˜๋Š” ๋ฌธ์ž์—ด์„ ๋Œ€์ฒดํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
ํ•ด๋‹น ๋ฌธ์ œ๋Š” ํŠน์ •ํ•œ ๋‹จ์–ด๋ฅผ ๋Œ€์ฒดํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์•˜๋‹ค.










2. substring()


substring() ๋ฉ”์„œ๋“œ๋Š” ๋ฌธ์ž์—ด์—์„œ ์›ํ•˜๋Š” ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์„ ์ถ”์ถœํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์ด ๋ฌธ์ œ์—์„œ๋Š” ๋’ค์˜ 4์ž๋ฆฌ๋งŒ ๊ธฐ์กด๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋ชจ๋‘ ๋งˆ์Šคํ‚น์ฒ˜๋ฆฌ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— substring()์œผ๋กœ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์ถ”์ถœํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹๋‹ค.

class Solution {
    public String solution(String phone_number) {
        String answer = "";
        
        for(int i=0; i<phone_number.length()-4; i++) {
            answer += "*";
        }
        answer += phone_number.substring(phone_number.length()-4);
        return answer;
    }
}

substring() ๋ฉ”์„œ๋“œ๋Š” ๋ฌธ์ž์—ด์—์„œ ์›ํ•˜๋Š” ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์„ ์ถ”์ถœํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.
์ด ๋ฌธ์ œ์—์„œ๋Š” ๋’ค์˜ 4์ž๋ฆฌ๋งŒ ๊ธฐ์กด๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋ชจ๋‘ ๋งˆ์Šคํ‚น์ฒ˜๋ฆฌ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— substring()์œผ๋กœ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์ถ”์ถœํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ๋” ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

substring() ๋ฉ”์„œ๋“œ์˜ ์‚ฌ์šฉ ์˜ˆ์‹œ

  1. substring(int beginIndex) ๋ฉ”์„œ๋“œ:
  • beginIndex๋ถ€ํ„ฐ ๋ฌธ์ž์—ด์˜ ๋๊นŒ์ง€์˜ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜
String str = "Hello, World!";
String substr = str.substring(7);
System.out.println(substr); // "World!"
  • ์œ„์˜ ์˜ˆ์‹œ์—์„œ substring(7)์€ ์ธ๋ฑ์Šค 7๋ถ€ํ„ฐ ๋ฌธ์ž์—ด์˜ ๋๊นŒ์ง€์˜ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์ธ "World!"๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.




  1. substring(int beginIndex, int endIndex) ๋ฉ”์„œ๋“œ:
  • beginIndex๋ถ€ํ„ฐ endIndex - 1๊นŒ์ง€์˜ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜
String str = "Hello, World!";
String substr = str.substring(0, 5);
System.out.println(substr); // "Hello"

์ฝค๋งˆ๋ฅผ ์•ˆ์ฐ์œผ๋ฉด ๊ธฐ์ž…ํ•œ ์ˆซ์ž๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ถœ๋ ฅ



์ฃผ์˜์‚ฌํ•ญ:

  • substring() ๋ฉ”์„œ๋“œ๋Š” ์ถ”์ถœ๋œ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, ์›๋ณธ ๋ฌธ์ž์—ด์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • beginIndex๋Š” ์ถ”์ถœํ•˜๋ ค๋Š” ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์˜ ์‹œ์ž‘ ์ธ๋ฑ์Šค๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, endIndex๋Š” ์ถ”์ถœํ•˜๋ ค๋Š” ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์˜ ๋ ์ธ๋ฑ์Šค๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. endIndex๋Š” ์‹ค์ œ ์ถ”์ถœ๋˜๋Š” ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์—๋Š” ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋ฏ€๋กœ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž๋Š” ์ธ๋ฑ์Šค 0์ž…๋‹ˆ๋‹ค.
  • beginIndex์™€ endIndex ๊ฐ’์€ ์œ ํšจํ•œ ๋ฒ”์œ„ ๋‚ด์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด IndexOutOfBoundsException์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ„์˜ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ์ฐธ๊ณ ํ•˜์—ฌ substring() ๋ฉ”์„œ๋“œ๋ฅผ ์ ์ ˆํžˆ ํ™œ์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์„ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


# ๐Ÿ”ธํ•ด๊ฒฐ

โœ…๋‹ค๋ฅธํ’€์ด(1)

class Solution {
  public String solution(String phone_number) {
     char[] ch = phone_number.toCharArray();
     for(int i = 0; i < ch.length - 4; i ++){
         ch[i] = '*';
     }
     return String.valueOf(ch);
  }
}

.toCharArray();

์•ž ๋ถ€๋ถ„์˜ ๋ฐฐ์—ด๋งŒ ๋ฐ”๊พธ๋ฉด ๋˜๋Š”๊ฑฐ๋ผ ๋ฐ”๊พธ๊ณ  ์ŠคํŠธ๋ง์œผ๋กœ ๋‹ค์‹œ ๋ณ€ํ™˜ํ•˜๊ธฐ




โœ…๋‹ค๋ฅธํ’€์ด (2-1)

class Solution {
  public String solution(String phone_number) {
      String answer = "";

        for (int i = 0; i < phone_number.length() - 4; i++)
            answer += "*";

        answer += phone_number.substring(phone_number.length() - 4);

        return answer;
  }
}

โœ…๋‹ค๋ฅธํ’€์ด (2-2)

class Solution {
    public String solution(String phone_number) {
        String answer = "";
        int phoneLength = phone_number.length();  
        
        answer = "*".repeat(phoneLength-4);
        answer += phone_number.substring(phone_number.length()-4);
        return answer;
    }
}

๐Ÿ”ธ์•Œ๊ฒŒ ๋œ ์ 

ํ’€์ด 2๋ฒˆ์—์„œ๋Š” ๋‘๋ฒˆ ์‚ฌ์šฉ๋˜๋Š” String phone_number์˜ ๊ธธ์ด๋ฅผ ๋ณ€์ˆ˜ํ™” ์‹œํ‚ค๊ณ ,
.repeat()์„ ํ™œ์šฉํ•˜์—ฌ phone_number์˜ ์ž๋ฆฌ์ˆ˜๊ฐ€ ๋‹ฌ๋ผ์ง€๋”๋ผ๋„ (phoneLength-4)๋ฒˆ๋งŒ ๋งˆ์Šคํ‚น ์ฒ˜๋ฆฌ๋ฅผ ์ง„ํ–‰ํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค.
๋ฉ”์„œ๋“œ๋งˆ๋‹ค ์–ด๋–ค ๋ฐฉ๋ฒ•์ด ํšจ์œจ์ ์ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š”๋ฐ ๋„์›€์ด ๋ ์ง€ ๋Š˜ ๊ณ ๋ฏผํ•ด๋ณด์ž!

profile
๊ผญ๊ผญ ์”น์–ด์„œ ์†Œํ™”์‹œํ‚ค๋Š” ๋ง›์žˆ๋Š” ์ฝ”๋”ฉ

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