컴공생의 발자취

[ 99클럽 코테 스터디 1일차 TIL ] 문자열 함수(반복, 자르기) 본문

💡 코테/99클럽

[ 99클럽 코테 스터디 1일차 TIL ] 문자열 함수(반복, 자르기)

MNY 2024. 3. 28. 23:07
728x90
반응형
💡 오늘의 학습 키워드

- 문자열 반복 함수 repeat
- 문자열 자르기 함수 substring

 

문자열 함수

* 반복 : repeat(int num)

String str = "Hello";
System.out.println(str.repeat(3));

// result : HelloHelloHello
  • String 문자열을 파라미터의 주어진 횟수만큼 반복

 

* 자르기: substring(int index) / substring(int startindex, endindex)

-> index는 0부터 시작

  • substring(int index) : String 문자열에서 index(포함)부터 끝까지의 문자열을 리턴
String str = "Hello";
System.out.println(str.substring(2));

// result : llo

 

  • substring(int startindex, endindex) : String 문자열에서 startindex(포함)부터 endindex(불포함) 이전까지의 문자열을 리턴
String str = "Hello";
System.out.println(str.substring(1,3));

// result : el

 


 

오늘의 회고

문제 1 : [직사각형 별찍기]

  • 어떤 문제가 있었고, 나는 어떤 시도를 했는지

2중 for문을 사용 하려고 했으나 반복문을 2개를 사용하는 것은 비효율적이라고 판단했다.

그래서 python 처럼 ( "*" * num ) 이런 식으로 사용할 수 있는 줄 알았으나 자료형이 맞지 않아 에러가 발생 하였다.

관련 함수가 있을 것이라 생각하였고 찾아 본 결과 repeat라는 함수를 찾았다.

 

  • 어떻게 해결했는지
import java.util.Scanner;

class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int column = sc.nextInt();
        int row = sc.nextInt();
        
        for (int i = 0; i < row; i++) {
            System.out.println("*".repeat(column));
        }
    }
}

 

  • 무엇을 새롭게 알았는지

문자열을 특정 횟수만큼 반복해주는 함수 repeat()를 알게 되었다.

 

문제 2 : [핸드폰 번호 가리기]

  • 어떤 문제가 있었고, 나는 어떤 시도를 했는지

어떤 값이 리턴되는지 / 어떤 과정을 거치는지 / 그 과정에서 필요한 변수가 무엇인지 

이렇게 3개로 분리해서 생각했다.

전화번호의 뒷 4자리만 숫자가 표시되어야 하기 때문에

  • 전화번호 길이 - 4만큼 * 추가
  • 앞의 과정 이후 나머지 숫자 추가

이렇게 앞부분과 뒷부분으로 나누어서 진행했다. 

앞부분은 *을 어떤 횟수만큼 반복이었고 뒷부분은 원래의 문자열에 특정 인덱스부터 끝까지 붙여넣어주는 식이었다.

앞부분은 우선적으로 [문제 1]에서 사용한 reteat() 함수를 생각했고 뒷부분은 인덱스를 이용해서 for문을 사용하는 방식을 생각했지만 관련 함수가 있을 거라고 생각했다.

 

  • 어떻게 해결했는지
class Solution {
    public String solution(String phone_number) {
        String answer = "";
        // 변수 : 전화번호 길이
        int phone_len = phone_number.length();
        
        // process
        // answer에 전화번호 길이 - 4만큼 * 추가
        // answer에 앞의 과정 이후 나머지 숫자 추가
        answer = "*".repeat(phone_len - 4);
        answer += phone_number.substring(phone_len - 4);
        
        // return : 전화번호의 뒷 4자리 제외한 나머지 숫자 *
        return answer;
    }
}

 

  • 무엇을 새롭게 알았는지

그렇게 뒷부분도 특정 인덱스부터 끝까지의 문자열을 잘라주는 함수 substring()을 알게 되었다.

또한, 주석과 같이 고민하는 과정?이 필요하다는 걸 생각하게 되는 계기가 되었다.

 

내일 학습할 것은 무엇인지

문제 2부터는 고민하는 과정?을 실질적으로 작성하며 진행하였지만

이런 과정이 익숙하지 않아 실전에서 사용하기 위해서는 더욱 많은 경험이 필요하다고 생각했다.

코테가 아니더라도 빅분기 자격증 공부도 더불어 진행할 것 같다.

 

 

 

728x90
반응형