https://www.acmicpc.net/problem/15552
원래 구하던 방식으로 print를 했더니 출력이 시간초과가 되었다. (Console.WriteLine)
백준 알고리즘 사이트에 C#의 빠른 입출력 방식은?
- StreamReader로 읽고, StringBuilder로 출력을 모아 놓았다가 그 String을 Console.WriteLine하는 방법이 있습니다. BufferedStream과 StringWriter로 조금 더 향상시킬 수 있는 것 같으나 자세한 것은 다른 분의 답변을 기다리겠습니다.
위와 같이 나와있다.
그럼 String과 StringBuilder의 차이는 무엇일까?
둘다 문자열을 조합하는 방법이다.
String
- Value type이 아닌 ref 타입이다. (문자열 조합시 새로운 class 생성 GB에 의해 수집)
- 문자열 조합할때마다 부하가 발생한다. -> 메모리 낭비가 발생해 비효율적인 코드가 생성된다.
- 문자수가 적을경우, 문자열을 작성하는 동안 광범위한 검색작업이 예상될때 사용된다.
StringBuilder
- 문자열을 조합할때마다 새로운 변수를 생성할 필요가 없다.
- 내부 자체적으로 함수를 가지고 있으며 값들을 조합하고 삭제할때 인스턴스를 추가 발생시키지 않는다.
- 설계시 알 수 없는 횟수의 문자열을 변경해야 할 때, 문자열에서 많은 횟수의 변경이 예상될때 사용된다.
int cnt = int.Parse(Console.ReadLine());
StrubgBuilder builder = new StrubgBuilder(); for(int i = 0; i < cnt; i++) { string[] str = Console.ReadLine().Split(' '); builder.Append((int.Parse(str[0]) + int.Parse(str[1])).To.String() + "\n"); } Console.WriteLine(builder.ToString()); |
위 코드로 문제를 맞췄댜ㅠㅜ 오래 걸렸당 ㅠㅜㅠㅜ
'개발 > Algorithm' 카테고리의 다른 글
[Algorithm] 백준 알고리즘 등차수열 한수 / C# / Python (0) | 2020.06.07 |
---|---|
[Algorithm] 백준 알고리즘 셀프넘버 (0) | 2020.06.06 |
[Algorithm] C# /Python / Format 함수 (0) | 2020.06.05 |
[Algorithm] C# 속도측정 하는 법 Stopwatch / Python / 백준알고리즘 평균 (0) | 2020.06.03 |
[Algorithm] Algorithm 공부방법 (0) | 2020.05.22 |