새소식

Programmers Coding Test/Java

[프로그래머스 120826] Java - 코딩테스트 입문 / 특정 문자 제거하기

  • -

 

 

특정 문자 제거하기

 

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

1)  문제

문자열 my_string과 문자 letter이 매개변수로 주어집니다.
my_string에서 letter를 제거한 문자열을 return하도록 solution 함수를 완성해주세요.
제한사항
1 ≤ my_string의 길이 ≤ 100
letter은 길이가 1인 영문자입니다.
my_string과 letter은 알파벳 대소문자로 이루어져 있습니다.
대문자와 소문자를 구분합니다.

 

 

 

2)  예시

 

 

Result Table
my_string letter result
"abcdef" "f" "abcde"
"BCBdbe" "B" "Cdbe"

 

 

 

입출력 예 #1
"abcdef" 에서 "f"를 제거한 "abcde"를 return합니다.


입출력 예 #2
"BCBdbe" 에서 "B"를 모두 제거한 "Cdbe"를 return합니다.

 

 

 

 

3)  풀이

아래 코드 중 1번 방식에 대한 풀이입니다.

 

1. 클래스 선언을 해줍니다

● class Solution {

클래스명은 대문자로 시작해야하고, 정답이라는 의미로 Solution이라는 단어를 사용하였습니다.

 

 

 

 

2. 메소드 선언을 해줍니다.

● public String solution(String my_string, String letter) {

문자열 my_string 및 letter를 매개변수로 사용하는 solution 메소드를 선언해줍니다.

메소드의 결과값인 solution은 문자열로 나오므로, 데이터 타입을 String로 해줍니다.

 

 

 

 

3. my_string에서 letter를 제거할 새로운 문자열을 answer로 선언하고 빈 문자열로 초기화합니다.

String answer = "";

 

 

 

 

4. 문자열의 길이에 대한 제한사항을 확인하고, 만족하지 않는다면 예외처리합니다.

     if(1> my_string.length() || my_string.length() > 100){
            throw new IllegalArgumentException("my_string 길이의 제한사항을 확인하세요");
        }
        

   

 

 

5. letter 문자열의 첫번째 문자를 추출하여 char 타입의 c 변수에 할당합니다.

그리고 for문을 통해 my_string의 i번째 단어를 currentChar로 할당하고, 그 값이 c와 같다면 다음 반복문을 시행,

그 값이 c와 같지 않다면 answer문자열에 추가해주고, 모든 순회가 끝나면 answer로 반환하도록 합니다.

 

    char c = letter.charAt(0);


        for(int i=0; i<my_string.length(); i++){
            char currentChar = my_string.charAt(i);
            if(currentChar==c) continue;
            answer+=currentChar;
        }
        return answer;
    }
}

 

※ char c로 추출하여 사용한 이유

if(currentChar==c) continue; 이 부분에서 만약 c가 아니라 letter로 사용했다면 char과 string 간의 비교가 안되어서 에러가 발생하게 되고 있습니다. 그래서 위에 매개변수 단계에서 char letter로 받아 사용해봤지만 여전히 같은 에러가 발생하여,

char c로 letter의 첫번째 문자를 추출하는 방식을 택하였습니다.

(단! 문자열String에서도 charAt을 사용할 수 있다는 점과는 헷갈려서는 안됩니다.)

 

 

 

 

 

 

4)  코드

 

1) for문으로 순회하며 값을 찾아 추가해주는 방식

class Solution {
    public String solution(String my_string, String letter) {
        String answer = "";
        
        if(1> my_string.length() || my_string.length() > 100){
            throw new IllegalArgumentException("my_string 길이의 제한사항을 확인하세요");
        }
        
        
        char c = letter.charAt(0);
        
        for(int i=0; i<my_string.length(); i++){
            char currentChar = my_string.charAt(i);
            if(currentChar==c) continue;
            answer+=currentChar;
        }
        return answer;
    }
}

 

 

 

2) replace 메소드를 활용하기

class Solution {
    public String solution(String my_string, String letter) {
        String answer = "";

        if (1 <= my_string.length() && my_string.length() <= 100) {
            answer = my_string.replace(letter, "");
        } else {
            throw new IllegalArgumentException("제한사항을 확인하세요");
        }

        return answer;
    }
}

 

 

※ replace 메소드

String newString = 원본문자열.replace(원본문자열에서 대체하고자할 문자열, 대체될 새로운 문자열);

이렇게하면 원본문자열에서 대체하고자할 문자열이 사라지고, 새로운 문자열이 들어간 newString이 생성되게 됩니다.

 

위 문제에서는 my_string 문자열 안에 있는 letter 문자열이 "" 빈문자열로 대체되며, 제거되는 효과처럼 보이게 합니다.

 

 

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.