<문제>
문자열 my_string과 정수 k가 주어질 때, my_string을 k번 반복한 문자열을 return 하는 solution 함수를 작성해 주세요.
<입출력 예>
"string" | 3 | "stringstringstring" |
"love" | 10 | "lovelovelovelovelovelovelovelovelovelove" |
나의 풀이
1. for문과 +=를 이용해서 풀었다 .
using System;
public class Solution {
public string solution(string my_string, int k) {
string answer = "";
for(int i=0;i<k;i++){
answer+=my_string;
}
return answer;
}
}
테스트 통과~.~
하지만 while 문으로 풀어보고싶다.
2. while문 사용
using System;
public class Solution {
public string solution(string my_string, int k) {
string answer = "";
int i=0;
while(i<k){
answer+=my_string;
i++;
}
return answer;
}
}
이걸로도 통과 !
다른사람 풀이
1. 굳이 새로운 변수 i를 선언하지 않고 k만을 이용해서 풀 수도 있다.
while(k>0)
{
answer += my_string;
k--;
}
2. StringBuilder와 Append 사용
using System;
using System.Text;
public class Solution {
public string solution(string my_string, int k) {
var sb = new StringBuilder();
for(int i = 0; i < k; ++i)
sb.Append(my_string);
return sb.ToString();
}
}
using System.Text;를 선언해줘야함
3. Enumerable.Aggregate 메서드
using System;
using System.Linq;
public class Solution {
public string solution(string my_string, int k) {
return Enumerable.Range(0, k).Select(s => my_string).Aggregate((a, b) => a + b);
}
}
처음 보는 개념인데 누적연산 할 때 사용하면 유용하다고 한다.
Linq 선언해야함
api 보고 정리하기
https://learn.microsoft.com/ko-kr/dotnet/api/system.linq.enumerable.aggregate?view=net-7.0
4. String.Concat 메서드
using System;
using System.Linq;
public class Solution {
public string solution(string my_string, int k) {
string answer = "";
String repeat = String.Concat(Enumerable.Repeat(my_string, k));
return repeat;
}
}
요것도 처음보는 함수인디 마찬가지로 Linq 선언해야함
String.Concat 메서드
String의 인스턴스를 하나 이상 연결하거나 String의 인스턴스 값에 해당하는 Object 표현을 하나 이상 연결합니다.
매개 변수
public static string Concat (string? str0, string? str1, string? str2);
연결할 첫 번째 문자열입니다.
연결할 두 번째 문자열입니다.
연결할 세 번째 문자열입니다.
https://learn.microsoft.com/ko-kr/dotnet/api/system.string.concat?view=net-8.0
Enumerable.Repeat<TResult>(TResult, Int32) 메서드
public static System.Collections.Generic.IEnumerable<TResult> Repeat<TResult> (TResult element, int count);
반복할 값입니다.
생성된 시퀀스에서 값을 반복할 횟수입니다.
====> Enumerable.Repeat(my_string, k) 이라고 쓰면 my_string 이 반복할 값이고 k는 반복할 횟수이다.
https://learn.microsoft.com/ko-kr/dotnet/api/system.linq.enumerable.repeat?view=net-8.0
'프로그래머스 코딩테스트 연습' 카테고리의 다른 글
[프로그래머스 코테 C#] Lv1. 서울에서 김서방 찾기 (0) | 2024.03.13 |
---|---|
[프로그래머스 코테 C#] Lv0. 문자 리스트를 문자열로 변환하기 (0) | 2024.03.11 |
[프로그래머스 코테 C#] Lv0. 문자열을 정수로 변환하기 (0) | 2024.03.11 |
[프로그래머스 코테 C#] Lv0. 문자열 계산하기 (0) | 2024.03.04 |
[프로그래머스 코테 C#] Lv0. 문자열안에 문자열 (1) | 2024.02.26 |