본문 바로가기
프로그래머스 코딩테스트 연습

[프로그래머스 코테 C#] Lv0. 문자열 곱하기

by 노재두내 2024. 3. 11.

<문제>

문자열 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);
str0String

연결할 첫 번째 문자열입니다.

str1String

연결할 두 번째 문자열입니다.

str2String

연결할 세 번째 문자열입니다.

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);

element  TResult

반복할 값입니다.

count  Int32

생성된 시퀀스에서 값을 반복할 횟수입니다.

 

====> Enumerable.Repeat(my_string, k) 이라고 쓰면 my_string 이 반복할 값이고 k는 반복할 횟수이다.

https://learn.microsoft.com/ko-kr/dotnet/api/system.linq.enumerable.repeat?view=net-8.0