Skip to content

✨ 팁

SeungYeon Kang edited this page Feb 28, 2024 · 5 revisions

알고리즘을 풀면서 얻은 코드 작성 팁을 모읍니다.

기본

  1. 실버~골3 수준에서 부산스러운 로직이 나오면 높은 확률로 틀렸거나, 더 좋은 방법이 존재한다. 코드는 간결하게 짤 수록 맞았습니다! 확률이 높아진다. 처음으로 돌아가서 다시 생각하기.

  2. STL 함수에서 내가 몰랐던 부분이 있을 수 있다. 분명 나는 맞게 했는데... 하지 말고 사용한 STL 확인하기.

시간초과 혹은 메모리초과

  1. 불필요한 연결을 끊어 시간 아끼기
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
  1. endl보다 '\n' endl은 매번 flush 를 해 느리다.

  2. vector이 메모리를 많이 먹는다. 단순 배열로 바꾸는 것도 하나의 방법.

위 세가지 방법으로 해결되지 않을 경우 로직의 문제이니 요행을 바라지 말고 처음으로 돌아간다.

length() 보다 size()

length 는 순회하여 값을 내 O(N)이지만 size()는 컨테이너의 크기를 반환해 O(1)이다.

매칭되는 값은 map으로 묶기

알고리즘을 풀다보면 '('와 ')', '('와 '2'과 같이 묶여다니는 값이 있다. 그런데 이 값이 두개 이상이라면, if문을 사용해 분리하는 것보다는 map으로 묶어놓는 게 코드를 더 깔끔하게 만든다.

(X)

    if(c == ')'){
        mul = 2;
    }
    if(c == ']'){
        mul = 3;
    }

    //mul을 사용한 코드

(O)

    map<char, int> num;

    num['['] = 2;
    num['('] = 3;

    //num[c]를 사용한 코드
Clone this wiki locally