백준

백준 1806, 부분합, c++

2024. 1. 25. 19:51

 

 

처음에 작성한 코드는 다음과 같다. 

이중for문이라 시간복잡도가 O(N^2), 최악의 경우엔 O(N^3)까지 나오는 코드이기 때문에

시간초과 오류가 발생했다.

 

 

 

이를 해결하기 위해서는 시간복잡도를 줄여야 했다.

아래 코드와 같이 반복문을 한번만 사용해 계산될 때까지 반복문이 계속 반복되도록 했다.

계산하면서 총 더한 sum의 값보다 주어진 S값이 크면 계속 반복문을 돌며 숫자를 더해나가고,

S보다 sum이 커지는 순간 계산을 멈추고 현재까지 더한 수의 개수를 출력하는 방식이다.

 

 

 

 

 

 

'백준' 카테고리의 다른 글

백준 14503번: 로봇 청소기, c++  (0) 2024.01.29
백준 1016번: 제곱 ㄴㄴ 수, c++  (0) 2024.01.25
백준 5622번: 다이얼  (0) 2023.10.01
백준 2743번: 단어 길이 재기  (0) 2023.10.01
백준 27866번: 문자와 문자열, c++  (0) 2023.09.13