코딩테스트 회고록/코테_Java

[JAVA] 프로그래머스 - 문자열안에 문자열

iamjisu 2023. 4. 5. 00:49

프로그래머스 코딩테스트 연습 Lv.0 '문자열안에 문자열' 문제입니다.

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

 

프로그래머스

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

programmers.co.kr


✏️ 문제 설명

문자열 str1, str2가 매개변수로 주어집니다. str1 안에 str2가 있다면 1을 없다면 2를 return하도록 solution 함수를 완성해주세요.

 

< 제한사항 >

  • 1 ≤ str1의 길이 ≤ 100
  • 1 ≤ str2의 길이 ≤ 100
  • 문자열은 알파벳 대문자, 소문자, 숫자로 구성되어 있습니다.

 

※ 아래 입출력 예시를 참고하세요!


⚠️ 입출력 예시

예시 1

str1 ▼                      
"ab6CDE443fgh22iJKlmn1o"

str2 ▼
"6CD"
1
//"ab6CDE443fgh22iJKlmn1o" str1에 str2가 존재하므로 1을 return합니다.

 

예시 2

str1 ▼                 
"ppprrrogrammers"

str2 ▼
"pppp"
"ppprrrogrammers" str1에 str2가 없으므로 2를 return합니다.

🔍 알고리즘 구상

  • str1 안에 str2 부분이 있다면 replace()를 이용해 str2를 특정한 문자로 변환 후
  • str1에 특정한 문자가 있다면 1로, 없다면 2로 리턴한다

✏️ 직접 구현한 코드

class Solution {
    public int solution(String str1, String str2) {
        int answer = 2;
        String res = str1.replace(str2,"*");
        for(int i = 0; i < res.length(); i++) {
            if(res.charAt(i)=='*')
            answer = 1;
        }
        return answer;
    }
}

🗣️ 코드 설명

  • 초기값을 2로 설정한 answer 생성한다
  • replace()를 이용해, str1에 있는 str2부분을 *문자로 변환한 후 res에 저장한다
  • 0부터 문자열 res의 길이보다 작을 때까지 증가하는 i를 인덱스 변수로 가진 for문을 만든다
  • for문의 if문에서는, charAt()을 이용해 res의 한 글자씩 자른 뒤 *문자와 비교해서 *와 같은 문자가 있으면 answer의 값을 1로 변환한다

🔥 다른 코드와 비교

class Solution {
    public int solution(String str1, String str2) {
        return (str1.contains(str2)? 1: 2);
    }
}

이 분은 삼항 연산자contains()를 사용해 한 줄로 코드를 구현했습니다.


⭐ 기억하고 넘어갈

  •  contains() 

https://codingismylife.tistory.com/68

 

[JAVA] 메서드 - contains()

🤔 어떤 메서드일까? contains()는 대상 문자열에 특정 문자열이 포함되어 있는지 boolean값으로 판별하는 메서드 입니다. 대상 문자열.contains(포함되어 있는지 판별할 특정 문자열) 대소문자를 구분

codingismylife.tistory.com

 

  •  replace() 

https://codingismylife.tistory.com/56

 

[JAVA] 메서드 - replace(), replaceAll()

🤔 어떤 메서드일까? replace() 와 replaceAll() 메서드는 문자열의 특정 문자를 원하는 문자로 변환하는 메서드입니다. replace() replace(CharSequence target, CharSequence replacement) 첫 번째 매개변수는 변환하고

codingismylife.tistory.com