문제 풀기/C#
31. 수박(string.Concat() 함수, Enumerable.Repeat 함수)
kagan-draca
2025. 1. 17. 15:43
풀이 1) 매개변수 int n을 / 2 한 만큼 반복문을 활용해 "수박"을 적어주고, n % 2 == 1 이면 "수"를 추가로 붙여준다.
using System;
using System.Linq;
public class Solution {
public string solution(int n)
{
string temp = "";
for(int i = 0; i < n / 2; i++)
{
temp += "수박";
}
return n % 2 == 1 ? temp + "수" : temp;
}
}
위의 풀이를 바탕으로 반복문 없이 "수박"을 반복적으로 작성할 수 있는 함수가 존재할 것이라 생각을 했다.
풀이 2)
검색 결과,
Enumberable.Repeat("반복할 문자열", 반복할 횟수);
그 결과,
string[] 형식으로 "반복할 문자열"이 반복할 횟수 만큼의 배열 길이로 생성 됐다.
이를 하나의 문자열로 만들어주기 위해서
string.Concat()
를 사용해 문자열을 붙여주는 작업을 수행해줬다.
그 후, n % 2 == 1일 경우 "수"를 추가로 이어붙여줬다.
using System;
using System.Linq;
public class Solution {
public string solution(int n)
{
string temp = string.Concat(Enumerable.Repeat("수박",n / 2));
return n % 2 == 1 ? temp + "수" : temp;
}
}
풀이1)이 풀이2) 보다 적은 수행시간을 요구할 때도 있지만,
더 많은 수행시간을 요구하는 상황이 존재한다.
이유는 잘 모르겠지만... 아무래도 temp += "수박"으로 붙이는 과정은
operator += 에 의해 += 으로 새로운 문자열을 추가할 수 있게 되는 것이고,
operator 내부에서는 new stirng(기존 문자열 + "수박")으로 동작하는 것으로 추측된다.
그래서 더 많은 과정을 요구하기 때문에 더 많은 수행시간을 필요로 하는 것 같다.