Algorithms
[BOJ] 2003번 수들의 합 2 Java 풀이
전형적인 투 포인터 문제다. 수열 하나에 포인터 두 개를 두고 탐색해주면 된다. 수열의 길이인 N의 최댓값이 10,000인데, 각 원소가 30,000을 넘지 않으므로 수열의 모든 원소를 합쳤을 경우에도 int의 범위에 해당해 처리하는데 문제가 없다. 마침 합으로 만들어야 하는 M의 경우에도 최댓값이 3억으로 알맞게 주어졌다. 시간 제한은 0.5초로 다른 문제와 비교해 길지 않은 편인데, 투 포인터로 배열 하나를 모두 돌아다녀야 2N으로 O(N)이고 최악의 경우 길이 10,000이라고 해도 20,000 번 안에 탐색이 끝나니까 0.5초면 충분하겠다. 주 풀이는 합에 포함할 범위의 처음과 끝을 나타내는 포인터 2개(start, end), 합을 저장할 변수 1개(sum), 합이 M과 같을 경우의 수를 세는 변..
2021. 2. 5.