
내가 생각했을때 문제에서 원하는부분
알파벳으로 이루어진 문자열 myString과 pat이 주어집니다.
myString의 연속된 부분 문자열 중 pat이 존재하면 1을 그렇지 않으면 0을 return 하는 solution 함수를 완성해 주세요.
단, 알파벳 대문자와 소문자는 구분하지 않습니다.
내가 이 문제를 보고 생각해본 부분
Main67 클래스의 main 메서드에서 Solution10 클래스의 solution 메서드를 호출하여 문자열 포함 여부를 확인하고 결과를 출력한다.
Solution10 클래스는 대소문자를 구분하지 않고 입력 문자열 myString에 pat 문자열이 포함되어 있는지를 판단하는 기능을 구현했다.
대문자/소문자 구분 제거
myString과 pat을 각각 toLowerCase() 메서드로 모두 소문자로 변환한다.
이렇게 하면 대소문자 차이에 따른 불일치 문제를 없앨 수 있다.
부분 문자열 포함 여부 판단
변환된 소문자 문자열 lowerMyString에 lowerPat가 포함되어있는지를 contains() 메서드로 검사한다.
contains()는 대상 문자열에 특정 문자열이 연속된 부분 문자열로 존재하면 true를 반환하는 메서드이다.
결과 반환
만약 포함되어 있다면 1을 반환하고, 그렇지 않으면 0을 반환한다.
이 반환값은 문제에서 요구하는 정답의 형태이다.
메인 메서드에서 테스트
main 메서드에서 실제 예제들을 넣어 호출하고 결과를 확인한다.
"AbCdEfG"와 "aBc"의 경우 1이 출력되고, "aaAA"와 "aaaaa"의 경우 0이 출력되도록 구현되어 있다.
코드로 구현
class Solution {
public int solution(String myString, String pat) {
String lowerMyString = myString.toLowerCase();
String lowerPat = pat.toLowerCase();
if (lowerMyString.contains(lowerPat)) {
return 1;
} else {
return 0;
}
}
}
프로그래머스 코드
package programmers;
// 프로그래머스 원하는 문자열 찾기
public class Main67 {
public static void main(String[] args) {
Solution10 solution = new Solution10();
// 테스트용 예제
System.out.println(solution.solution("AbCdEfG", "aBc")); // 1 출력 예상
System.out.println(solution.solution("aaAA", "aaaaa")); // 0 출력 예상
}
}
class Solution10 {
public int solution(String myString, String pat) {
String lowerMyString = myString.toLowerCase();
String lowerPat = pat.toLowerCase();
if (lowerMyString.contains(lowerPat)) {
return 1;
} else {
return 0;
}
}
}
위에 있는 코드를 변경한 코드
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.