[CodingTest] 문자열안에 문자열

hye·2023년 4월 8일
0

AlgorithmTest

목록 보기
66/95

📖 Exam

문제 설명

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

제한 조건

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

입출력 예

str1str2result
"ab6CDE443fgh22iJKlmn1o""6CD"1
"ppprrrogrammers""pppp"2
"AbcAbcA""AAA"2
  • 입출력 예 #1
    "ab6CDE443fgh22iJKlmn1o" str1에 str2가 존재하므로 1을 return합니다.

  • 입출력 예 #2
    "ppprrrogrammers" str1에 str2가 없으므로 2를 return합니다.

  • 입출력 예 #3
    "AbcAbcA" str1에 str2가 없으므로 2를 return합니다.


✍ Answer

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

💡 Realization

  • str1.split(str2).length 로 판단 하려고했는데 테스트케이스에서 통과가 안되길래 파악해보니 앞과 뒤에 문자열이 배치되어있을 경우 length 가 1만 나오는거였다.

  • for문으로 돌려서 찾기도 원활하지않아서 관련 메서드가 뭐가 있을지 찾아보니 바로 contains 함수가 나왔다.

class Solution {
    public int solution(String str1, String str2) {
        int len1 = str1.length();
        int len2 = str2.length();

        if (len2 > len1) {
            return 2;
        }

        for (int i = 0; i < len1 - len2 + 1; i++) {
            if (str1.charAt(i) == str2.charAt(0)) {
                for (int j = 0; j < len2; j++) {
                    if (str1.charAt(i + j) == str2.charAt(j)) {
                        if (j == len2 - 1) {
                            return 1;
                        }
                        continue;
                    }

                    break;
                }
            }
        }

        return 2;
    }
}

참고사이트: https://school.programmers.co.kr/learn/courses/30/lessons/120908/solution_groups?language=java

profile
Junior Backend Developer

0개의 댓글