[프로그래머스/181878] 원하는 문자열 찾기

☑️ 문제

프로그래머스 181878

☑️ 풀이

첫 번째 풀이

  • 대/소문자 관련한 메서드가 Character.toLowerCase() / Character.toUpperCase() 밖에 없는 줄 알고, 반복문을 통해 문자열의 문자를 하나씩 체크한 뒤 바꿔주었다.
//시간: 33.22ms
//메모리: 98.2MB

class Solution {
    public int solution(String myString, String pat) {
        int answer = 0;
        for (int i = 0; i < myString.length(); i++) {
            char c1 = myString.charAt(i);
            if (Character.isLowerCase(c1)) {
                myString = myString.replace(c1, Character.toUpperCase(c1));
            }
        }

        System.out.println(myString);

        for (int i = 0; i < pat.length(); i++) {
            char c2 = pat.charAt(i);
            if (Character.isLowerCase(c2)) {
                pat = pat.replace(c2, Character.toUpperCase(c2));
            }
        }

        System.out.println(pat);

        for(int i = 0; i < myString.length(); i++) {
            if (i <= myString.length() - pat.length()) {
                String str = myString.substring(i, i + pat.length());

                if (str.equals(pat)) {
                    return 1;
                }
            }
        }
        return 0;
    }
}

두 번째 풀이

  • 문자열 자체를 대/소문자로 변경하는데 toLowerCase() / toUpperCase() 를 쓸 수 있었다.
  • 훨씬 더 간단하게 풀 수 있는 문제였다.
//시간: 32.15ms
//메모리: 107MB

class Solution {
    public int solution(String myString, String pat) {
        myString = myString.toLowerCase();
        pat = pat.toLowerCase();

        for(int i = 0; i < myString.length(); i++) {
            if (i <= myString.length() - pat.length()) {
                String str = myString.substring(i, i + pat.length());

                if (str.equals(pat)) {
                    return 1;
                }
            }
        }

        return 0;
    }
}

☑️ 문법 정리 - toLowerCase()와 toUpperCase()

toUpperCase(), toLowerCase()

  • 문자열의 모든 문자를 대/소문자로 변환한다.
  • 변환 결과는 원본 문자열을 변경하지 않아, 반드시 반환값을 사용해야 한다.
String str = "Hello World!";
String lower = str.toLowerCase(); // "hello world!"
String upper = str.toUpperCase(); // "HELLO WORLD!"

문자(Character) 단위 변환

  • 문자 단위 변환은 Character 클래스의 toUpperCase(char), toLowerCase(char) 를 사용한다.
  • 변환 결과는 원본 문자를 변경하지 않아, 반드시 반환값을 사용해야 한다.
char ch = 'A';
char lower = Character.toLowerCase(ch); // 'a'
char upper = Character.toUpperCase(ch); // 'A'

© 2021. All rights reserved.

yaejinkong의 블로그