- 2473 (세 용액)
- 자료형 주의!! 용액 하나 자체에 대한 자료형은 int 범위 이내이지만, 세 용액이 합쳐지면 int 범위 넘어갈 가능성 있으므로 long long으로 관리.
- 세 용액이 합쳐졌을 때 0인 경우 바로 리턴해주면 좋음.
- 보석 쇼핑
- while 문에 true 대신 종료 조건을 써서 명확히 구현
- 배열 갱신 시, idx별로 하지 않고 한번에 갱신 가능
answer = {left+1, right};
- 1253 (좋다)
- 처음에 벡터 만들 때 index 1부터 n까지 쓰기 위해 n+1개로 할당하고 문제를 풀었었는데요, 아무리 다른 곳들 고쳐봐도 계속 틀렸다고 뜨길래 벡터를 n개 할당해서 0부터 n-1까지 인덱스를 쓰게 하니 그제서야 맞다고 뜨더라고요..
- 이 문제는
|Ai| ≤ 1,000,000,000, Ai는 정수
음수도 취급하는 문제에요. 그런데 n+1 사이즈의 벡터를 0으로 초기화한 다음 1~n번째 수까지 입력받은 뒤정렬을 처음부터 끝까지 해주면
입력된 배열: 0 1 2 3 -10 원하는 결과: 0 -10 1 2 3 정렬후 배열: -10 0 1 2 3
- 원치 않는 0이 원소 배열에 추가되는 결과를 초래한답니다 🤗그래서 0~n-1의 범위가 아니라 1~n의 범위로 알고리즘을 수행하고 싶다면벡터에서의 반복자는 산술 연산을 지원해서 정렬 시작 부분을 조정해서 수행해주시면 됩니다.
sort(num.begin() + 1, num.end());
- 함수화 관련: 좋은 수인가 아닌가를 판별하는 것만을 함수화하고 각 수에 대해 투 포인터를 진행하기 위한 for loop는 main에서 수행하기를 권장
- 1484 (다이어트)
- 제곱수를 배열에 저장하는 방법으로 풀이했다면 배열의 크기를 설정하는 것이 필요. G가 100,000보다 작거나 같으므로 50001의 값이 적당 (50,000^2 - 49,999^2 = 99,999)
- 투포인터 알고리즘이기 때문에 left와 right가 각각 한번씩 전체 배열을 탐색함. 동일한 제곱수가 2번을 초과해 중복되어 사용하지 않음. 따라서 배열에 저장하지 않고 필요할 때 제곱수를 계산해서 사용 권장
- 함수화: vector에 가능한 몸무게를 저장하고 vector를 리턴하는 것을 권장
- 2531 (회전초밥)
- 2중 for문으로 구할 시 Pypy3로 통과할 수 있지만, 중복되는 연산이 반복되고 있으므로 O(n)으로 풀이가 가능한 더 효율적인 알고리즘을 사용해서 풀어보도록 권장