티스토리 뷰
1. 무작정 for문을 돌려봤는데 정말 시간 복잡도가 쉣이ㅏ다.
아예 cookie 배열에서 n번째까지의 합을 따로 sum이라는 배열에 저장했다.
그러면 첫째 아들은 sum[m] - sum[l] 둘째 아들은 sum[r] - sum[m+1] 을 가져간다.
2. 처음에는 sum, cookie 배열에서 for문을 0부터 시작하는지 1부터 시작하는지 너무 헷갈렸다.
아래와 같이 진행되는 것을 자꾸 파악하지 못해서 헤맸다.
i | 0 | 1 | 2 | 3 | 4 |
sum[i] | 0 | 1 | 2 | 4 | 7 |
cookie[i] | 1 | 1 | 2 | 3 |
3. 두 번째 for문에서 첫째 아들의 sum[m]을 결정하고
세 번째 for문에서는 둘째 아들의 시작점은 m+1로 정해져 있으므로 m[r]을 결정한다.
네 번째 for문에서는 둘째 아들의 쿠키 갯수가 정해지고 나서 그 갯수에 맞춰서 첫째 아들의 시작점 l 을 결정한다.
4. 아무리 sum으로 시간 복잡도를 줄여도 for문이 4개나 있고 배열의 크기가 최대 2000 이라는 점에서 시간 복잡도가 여전히 크다.
(1) if문
second_son 의 갯수는 변하지 않는 반면에 first_son의 갯수는 sum[l] 만큼 빼야한다.
그러므로 애초에 second_son의 갯수가 first_son보다 큰 것은 탈락
어차피 answer에는 기존 answer 값과 second_son 중에 최대값이 들어가므로 answer > second_son인 경우도 탈락
(2) break;
첫째 아들의 l 값을 결정하는 for 문에서 if 문 조건을 만족했다면 해당 for문을 나와도 된다.
어차피 l 값이 증가해봤자 answer 보다 값이 작아지므로 비교할 필요가 없다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int sum[2001];
// cookie_len은 배열 cookie의 길이입니다.
int solution(int cookie[], int cookie_len) {
int answer = 0;
for (int i = 0;i < cookie_len; i++){
sum[i+1] = sum[i] + cookie[i];
}
for (int m = 1; m < cookie_len; m++){
int first_son = sum[m];
for(int r = m+1; r <= cookie_len; r++){
int second_son = sum[r] - sum[m];
if(answer > second_son || second_son > first_son) continue;
for(int l = 0; l < m; l++){
if(first_son - sum[l] == second_son && answer < second_son){
answer = second_son;
break;
}
}
}
}
return answer;
}
|
'알고리즘 > C' 카테고리의 다른 글
프로그래머스 N-Queen C언어 (0) | 2019.09.22 |
---|---|
프로그래머스 피보나치 수 C언어 (0) | 2019.09.22 |
프로그래머스 올바른 괄호의 갯수 C언어 (0) | 2019.09.21 |
프로그래머스 방문 길이 C언어 (0) | 2019.09.21 |
프로그래머스 멀리 뛰기 C언어 (0) | 2019.09.21 |
- Total
- Today
- Yesterday
- CellForRowAt 호출안됨
- Django
- django tag
- iOS 검은 화면
- django pythoneverywhere
- python 웹 배포
- 실시간 데이터베이스
- pythonanywhere배포방법
- iOS UITableView 출력안됨
- 웹 배포
- django clean
- Realtime Database
- django 게시판
- 장고 게시판
- pythonanywhere배포
- Firebase 데이터베이스 추천
- 까만 화면
- iOS 화면 안나옴
- django 로그인접근
- django 개발일지
- 알파벳 카운팅
- django 태그
- UITableViewController Not Working
- cleaned_data
- 테이블출력안됨
- iOS 데이터베이스
- CellForRowAt Not Called
- ModelForm Form 차이
- 장고 태그달기
- 데이터베이스 추천
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |