2023년 1월 USACO 응시 중에 문자열 덧셈을 아래와 같은 형식으로 해주었다.
ex = ex + "R";
코드의 시간복잡도에는 이상이 없었지만 계속 시간초과가 나오는걸 보고 내가 완전히 헷갈리고있는게 있나보다 생각했다.
결국 테케 절반을 TLE로 날리고 solution을 확인해보니 내 코드와 다를 바 없는 정답 코드를 보고 이상함을 느끼게 되었고 시험시 제출하였던 상단과 같은 코드만 바꾸어주니.....
바로 정답이 나오는 것 아니겠는가....
+= 도 append와 비슷한 속도다
ans = ans + "R";
위와 같은 구조가 느린 속도를 보이는 이유는 "새로운 문자열을 생성하여" 기존의 ans에 대입하기 때문이다.
뭐 어쩔 수 없다. 이제라도 알았으니 된거다
'알고리즘 지식' 카테고리의 다른 글
분할정복을 이용한 정방행렬의 거듭제곱과 함께하는 빠른 점화식 계산 (1) | 2024.09.25 |
---|---|
const char* 자료형에서 순회를 하는 방법 (0) | 2022.09.07 |
C++ 1ll(1LL)이란 (2) | 2021.11.24 |
using namespace std의 위험성에 관하여(PS) (0) | 2021.11.23 |
삼항 연산자, 조건 연산자 C++ (easy) (0) | 2021.11.22 |