Print Friendly and PDF

기타/코딩테스트 공부

[백준] 코딩은 체육과목 입니다 - 25314번

나는야 개발자 2025. 5. 1. 09:48
반응형

깃 링크 : 바로가기

링크 : 바로가기

 

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