728x90
0. [c++] 백준 |
https://www.acmicpc.net/problem/2096
1. 풀이 |
코드가 깔끔하지 못하는데, 사실 간단한 문제이다.
계단을 한 계단씩 내려간다고 생각하면서 수를 받아올 때마다 계단 1, 2, 3의 위치에서 최대값, 최소값을 구하는 것이다.
쓸모없는 데이터를 유지하지 않는 것에 주의하면서 설계해보았다.
2. 소스코드 |
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 33 34 35 36 | #include<iostream> #include<vector> #include<algorithm> using namespace std; int ret_MAX[3]; int ret_MIN[3]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); int N, a, b, c, x, y, z; cin >> N; cin >> ret_MAX[0] >> ret_MAX[1] >> ret_MAX[2]; ret_MIN[0] = ret_MAX[0]; ret_MIN[1] = ret_MAX[1]; ret_MIN[2] = ret_MAX[2]; for (int i = 1; i < N; i++) { cin >> a >> b >> c; x = a; y = b; z = c; a += max(ret_MAX[0], ret_MAX[1]); b += max(max(ret_MAX[0], ret_MAX[1]), ret_MAX[2]); c += max(ret_MAX[1], ret_MAX[2]); ret_MAX[0] = a; ret_MAX[1] = b; ret_MAX[2] = c; x += min(ret_MIN[0], ret_MIN[1]); y += min(min(ret_MIN[0], ret_MIN[1]), ret_MIN[2]); z += min(ret_MIN[1], ret_MIN[2]); ret_MIN[0] = x; ret_MIN[1] = y; ret_MIN[2] = z; } cout << max(ret_MAX[0], max(ret_MAX[1], ret_MAX[2])) << " " << min(ret_MIN[0], min(ret_MIN[1], ret_MIN[2])) << endl; return 0; } | cs |
3. 참고 |
질문이나 지적 있으시면 댓글로 남겨주세요~
도움 되셨으면 하트 꾹!
'<백준> > |c++| easy' 카테고리의 다른 글
[c++]백준 10815 - 숫자 카드(이진 탐색) (0) | 2019.07.04 |
---|---|
[c++] 백준 1920 - 수 찾기(이진 탐색, 이분 탐색) (0) | 2019.07.03 |
[c++] 백준 4949 - 균형잡힌 세상(스택 활용) (2) | 2019.06.13 |
[c++] 백준 10799 - 쇠막대기(queue의 활용) (0) | 2019.06.12 |
[c++] 백준 11650 - 좌표 정렬하기(vector 정렬) (0) | 2019.06.12 |