❓ 문제 설명
숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서,
이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요.
예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다.
이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다.
❌ 제한사항
1 ≤ p의 길이 ≤ 18
p의 길이 ≤ t의 길이 ≤ 10,000
t와 p는 숫자로만 이루어진 문자열이며, 0으로 시작하지 않습니다.
👀 입출력 예
입출력 예 #1
본문과 같습니다.
입출력 예 #2
p의 길이가 1이므로 t의 부분문자열은 "5", "0", 0", "2", "2", "0", "8", "3", "9", "8", "7", "8"이며
이중 7보다 작거나 같은 숫자는 "5", "0", "0", "2", "2", "0", "3", "7" 이렇게 8개가 있습니다.
입출력 예 #3
p의 길이가 2이므로 t의 부분문자열은 "10", "02", "20", "03"이며, 이중 15보다 작거나 같은 숫자는 "10", "02", "03" 이렇게 3개입니다.
"02"와 "03"은 각각 2, 3에 해당한다는 점에 주의하세요
💡 나의 풀이
public static int solution(string t, string p)
{
int answer = 0;
string str = "";
int num = 0;
for(int i = 0; i < t.Length - p.Length + 1; i++)
{
num = int.Parse(t.Substring(i, p.Length));
if (num <= int.Parse(p))
{
answer++;
}
}
return answer;
}
static void Main(string[] args)
{
string t = "3141592";
string p = "271";
Console.WriteLine(solution(t,p));
}
for 문을 이용하여 t에서 길이가 p.Length인 부분 문자열을 추출 (Substring(i, p.Length))
해당 부분 문자열을 int.Parse()를 통해 정수로 변환 후 p와 비교
num이 p보다 작거나 같다면 answer 증가
😊실행 결과
코테를 준비 하다 보니 알아둬야 할 메서드 들이 참 많음을 느꼈다.
주로 써본적도 없는 것들이 대부분인 것 같은 기분...
알던 것도 다시 한번 정리 해보자!
🔹 1. Substring(int startIndex, int length)
역할: 문자열에서 startIndex부터 length 길이만큼의 부분 문자열을 반환
string str = "Hello, World!";
Console.WriteLine(str.Substring(7, 5)); // "World"
🔹 2. IndexOf(string value) / LastIndexOf(string value)
역할: 특정 문자열이 처음 또는 마지막으로 나타나는 인덱스를 반환
string str = "Hello, World!";
Console.WriteLine(str.IndexOf("o")); // 4
Console.WriteLine(str.LastIndexOf("o")); // 8
🔹 3. Contains(string value)
역할: 문자열에 특정 값이 포함되어 있는지 확인 (true 또는 false 반환)
string str = "Hello, World!";
Console.WriteLine(str.Contains("World")); // true
🔹 4. Replace(string oldValue, string newValue)
역할: 문자열 내 특정 부분을 다른 문자열로 변경
string str = "Hello, World!";
Console.WriteLine(str.Replace("World", "C#")); // "Hello, C#!"
🔹 5. Split(char separator)
역할: 특정 문자를 기준으로 문자열을 분할하여 배열로 반환
string str = "apple,banana,grape";
string[] fruits = str.Split(',');
foreach (var fruit in fruits)
{
Console.WriteLine(fruit);
}
// 출력: apple banana grape
🔹 6. Join(string separator, string[] values)
역할: 문자열 배열을 특정 구분자로 연결
string[] words = { "Hello", "World", "C#" };
string result = string.Join(" ", words);
Console.WriteLine(result); // "Hello World C#"
🔹 7. ToUpper() / ToLower()
역할: 문자열을 대문자 또는 소문자로 변환
string str = "Hello, World!";
Console.WriteLine(str.ToUpper()); // "HELLO, WORLD!"
Console.WriteLine(str.ToLower()); // "hello, world!"
🔹 8. Trim() / TrimStart() / TrimEnd()
역할: 문자열의 앞뒤 공백(또는 특정 문자)을 제거
string str = " Hello, World! ";
Console.WriteLine(str.Trim()); // "Hello, World!"
Console.WriteLine(str.TrimStart()); // "Hello, World! "
Console.WriteLine(str.TrimEnd()); // " Hello, World!"
🔹 9. StartsWith(string value) / EndsWith(string value)
역할: 문자열이 특정 값으로 시작하거나 끝나는지 확인 (true 또는 false 반환)
string str = "Hello, World!";
Console.WriteLine(str.StartsWith("Hello")); // true
Console.WriteLine(str.EndsWith("!")); // true
🔹 10. PadLeft(int totalWidth, char paddingChar) / PadRight(int totalWidth, char paddingChar)
역할: 문자열의 길이를 맞추기 위해 왼쪽 또는 오른쪽에 특정 문자를 추가
string str = "42";
Console.WriteLine(str.PadLeft(5, '0')); // "00042"
Console.WriteLine(str.PadRight(5, 'X')); // "42XXX"
🔹 11. Remove(int startIndex, int count)
역할: 문자열에서 특정 부분을 삭제
string str = "Hello, World!";
Console.WriteLine(str.Remove(5, 2)); // "Hello World!"
🔹 12. Insert(int startIndex, string value)
역할: 문자열의 특정 위치에 새로운 문자열 삽입
string str = "Hello World!";
Console.WriteLine(str.Insert(5, ",")); // "Hello, World!"
🔹 13. String.Format()
역할: 문자열을 특정 형식으로 변환
string name = "Alice";
int age = 25;
Console.WriteLine(string.Format("Name: {0}, Age: {1}", name, age));
// "Name: Alice, Age: 25"
🔹 14. $"..." (문자열 보간, String Interpolation)
역할: $를 사용하여 변수 값을 문자열에 직접 삽입
string name = "Alice";
int age = 25;
Console.WriteLine($"Name: {name}, Age: {age}");
// "Name: Alice, Age: 25"
🔹 15. string.IsNullOrEmpty(str) / string.IsNullOrWhiteSpace(str)
역할: 문자열이 null이거나 빈 문자열("")인지, 또는 공백만 포함하는지 확인
string str1 = "";
string str2 = " ";
Console.WriteLine(string.IsNullOrEmpty(str1)); // true
Console.WriteLine(string.IsNullOrWhiteSpace(str2)); // true
✅ 문자열 관련 메서드 정리표
'코딩테스트' 카테고리의 다른 글
25/02/25 | CodingTest 4 문자열 섞기 (0) | 2025.02.25 |
---|---|
25/02/03 | CodingTest 1 원하는 문자열 찾기 (0) | 2025.02.04 |