반응형
깃 링크 : 바로가기
링크 : 바로가기
1차 시도
public class num_25314
{
public static void Main()
{
var input = Convert.ToInt32(Console.ReadLine());
var total = input / 4;
string strint = "int";
string strlong = "long ";
for (int i = 0; i < total; i++)
{
strint = strlong + strint;
}
Console.WriteLine(strint);
}
}
결과
- 4로 나눠 나온 값 만큼 "long "을 넣어주면 됨
1차 최적화 시도
using System.Text;
public class num_25314
{
public static void Main()
{
var input = Convert.ToInt32(Console.ReadLine());
var total = input / 4;
string strint = "int";
string strlong = "long ";
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < total; i++)
{
stringBuilder.Append(strlong);
}
stringBuilder.Append(strint);
Console.WriteLine(stringBuilder.ToString());
}
}
결과
- 메모리 사용량에서 차이점을 보임
2차 최적화 시도
using System.Text;
public class num_25314
{
public static void Main()
{
var input = Convert.ToInt32(Console.ReadLine());
var total = input / 4;
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < total; i++)
{
stringBuilder.Append("long ");
}
stringBuilder.Append("int");
Console.WriteLine(stringBuilder.ToString());
}
}
결과
- 미미하지만 메모리에서 조금 차이가 보임
특이점
- stringBuilder.Append("long ");를 사용하면 for문을 돌때마다 새로 생성하는 줄 알았지만 "문자열 리터럴"이라고 해 메모리에 한 번만 저장을 수행하다고 함
- StringBuilder 또한 문자열 참조를 복사하는 것이 아닌 문자들의 값을 자신의 버퍼에 복사하기 때문에 Append("long ");를 할때 매번 새로운 문자열을 생성하는 것이 아닌 이미 존재하는 문자 내용을 버퍼에 복사하는 작업이라 함
*버퍼란?
- 데이터를 임시 저장하는 메모리 영역
- 데이터 효율 처리를 위한 중간 저장소 역할이라 함
반응형
'기타 > 코딩테스트 공부' 카테고리의 다른 글
[백준] A+B-7 - 11021번 (0) | 2025.05.01 |
---|---|
[백준] 빠른 A+B - 15552번 (0) | 2025.05.01 |
[백준] 영수증 - 25304번 (0) | 2025.05.01 |
[백준] 합 - 8393번 (0) | 2025.05.01 |
[백준] A+B - 10950번 (0) | 2025.05.01 |