Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 호텔 방 배정
- 트라이
- 가사 검색
- 트라이 #trie #알고리즘
- jdbc
- bulk update
- 불량 사용자
- 징검다리 건너기
- Tistory
- 프로그래머스
- Python
- Open API
- 튜플
- 카카오 인턴
- 알고리즘
- Spring Boot
- 티스토리 open api
- 보행자 천국
- pycon
- 티스토리
- trie
- CleanCode
- 크레인 인형뽑기 게임
Archives
- Today
- Total
택시짱의 개발 노트
[백준] 17127번 벚꽃이 정보섬에 피어난 이유 본문
링크
https://www.acmicpc.net/problem/17127
풀이
최대화된 네 개의 P의 합을 구하는 문제이다.
next_permutation을 이용하여 그룹이 끝나는 지점의 모든 조합을 구하여 최댓값을 구하도록 하였다.
#include<iostream>
#include<vector>
#include<algorithm>
#define SIZE 15
using namespace std;
int arr[SIZE];
int main(void) {
cin.tie(NULL); cout.tie(NULL);
int N; cin >> N;
for (int i = 0; i < N; i++) {
cin >> arr[i];
}
vector<int> idx(N, 0);
for (int i = N - 1; i >= N - 4; i--) {
idx[i] = 1;
}
int res = 0;
do {
vector<int> list;
for (int i = 0; i < N; i++) {
if (idx[i] == 1)
list.push_back(i);
}
int left = -1, right, tmp = 0;
for (auto l : list) {
int t = 1;
for (int i = left + 1; i <= l; i++) {
t *= arr[i];
}
left = l;
tmp += t;
}
res = max(res, tmp);
} while (next_permutation(idx.begin(), idx.end()));
cout << res;
}
반응형
'알고리즘' 카테고리의 다른 글
[프로그래머스] 크레인 인형뽑기 게임 (0) | 2020.04.01 |
---|---|
[백준] 5427번 불 (0) | 2020.03.31 |
[백준] 13913번 숨바꼭질 4 (0) | 2020.03.30 |
[백준] 12851번 숨바꼭질 2 (0) | 2020.03.30 |
[프로그래머스] 가사 검색 (0) | 2020.03.27 |
Comments