728x90
문제 설명
알파벳으로 이루어진 문자열 myString과 pat이 주어집니다. myString의 연속된 부분 문자열 중 pat이 존재하면 1을 그렇지 않으면 0을 return 하는 solution 함수를 완성해 주세요.
단, 알파벳 대문자와 소문자는 구분하지 않습니다.
제한사항
- 1 ≤ myString의 길이 ≤ 100,000
- 1 ≤ pat의 길이 ≤ 300
- myString과 pat은 모두 알파벳으로 이루어진 문자열입니다.
입출력

입출력 예 #1
- "AbCdEfG"의 0~2번 인덱스의 문자열은 "AbC"이며, 이는 pat인 "aBc"와 같습니다. 따라서 1을 return 합니다.
입출력 예 #2
- myString의 길이가 pat보다 더 짧기 때문에 myString의 부분 문자열 중 pat와 같은 문자열이 있을 수 없습니다. 따라서 0을 return 합니다.
풀이
처음 풀이 : 오답!
문자열 내에 지정된 문자열이 있는지 알아내는 함수 : Contains()
public class Solution {
public int solution(string myString, string pat) {
if(myString.Contains(pat))
{
return 1;
}
else
{
return 0;
}
}
}
==> 대소문자를 구분하기 때문에 정답이 될 수 없다!
대소문자의 구애를 받지 않기 위해 myString 과 pat 모두 대문자로 바꾸어준 후 Contains() 함수를 적용시키자!
※ 소문자 --> 대문자 함수 : ToUpper()
if(myString.ToUpper().Contains(pat.ToUpper()))
최종 풀이
public class Solution {
public int solution(string myString, string pat) {
if(myString.ToUpper().Contains(pat.ToUpper()))
{
return 1;
}
else
{
return 0;
}
}
}
다른 풀이
IndexOf() 함수를 사용하여 문자열의 위치로 풀이!
==> IndexOf() 함수는 해당하는 문자열이 없으면 '-1' 반환!
public class Solution {
public int solution(string myString, string pat)
{
return myString.ToUpper().IndexOf(pat.ToUpper()) == -1 ? 0 : 1;
}
}
Contains(string)
: 문자열 내에서 지정한 하위 문자열이 발생하는지를 나타내는 값을 반환.
ToUpper()
: 문자열을 대문자로 변환하여 반환.
IndexOf()
: 인스턴스에서 맨 처음 발견되는 지정된 유니코드 문자 또는 문자열의 0부터 시작하는 인덱스를 보고.
이 인스턴스에 해당 문자나 문자열이 없으면 이 메서드는 -1을 반환.
'공부 > 코딩테스트' 카테고리의 다른 글
프로그래머스/C# - 자릿수 더하기 (0) | 2024.04.15 |
---|---|
프로그래머스/C# - 약수의 합 (0) | 2024.04.15 |
프로그래머스/C# - 문자 리스트를 문자열로 변환하기 (0) | 2024.03.11 |
프로그래머스/C# - 문자열 곱하기 (0) | 2024.03.11 |
프로그래머스/C# - 문자열 정수로 변환하기 (0) | 2024.03.11 |