반응형
문제
https://www.acmicpc.net/problem/2036
풀이
- 1보다 큰 양수는 큰 양수끼리 곱하는 것이 가장 큰 값이 나올 것이다.
- 1은 더하는게 가장 큰 값이다. 1과 다른 수를 뽑아서 곱해봤자, (1 * x) = x 이기 때문
- 음수는 가장 작은 음수끼리 곱하는 것이 가장 큰 값이 나올 것임
- 0은 음수가 남았을 때, 음수랑 곱해주면 0으로 가장 큰 값이 나오게 될 것이다. 그 외에는 있으나 마나..?
- 그러므로 배열을 입력받고, 1보다큰 양수, 음수, 0 배열로 나눠주어서 계산하면 될 것이다.
소스코드
후기
- 그리디 알고리즘 이라는 것을 판단하게 되면 쉽게 풀 수 있는 문제였다고 생각한다.
- 하지만 나는 최초에 0 요소를 생각하지 못해서 틀렸습니다를 받았었음..
- 다시 한 번 문제를 천천히 읽으면서 어떤 반례가 있을지 생각해보다 0의 존재를 깨닫고 풀게되었다.
반응형
'PS > 백준' 카테고리의 다른 글
[BOJ] 백준 1000 A+B (Swift) (0) | 2022.11.27 |
---|---|
[BOJ] 백준 2557 Hello World (Swift) (0) | 2022.11.27 |
[BOJ] 백준 5545 최고의 피자 (Swift) (0) | 2022.11.13 |
[Programmers] 다음에 올 숫자 (Swift) (0) | 2022.11.11 |
[BOJ] 백준 11725 트리의 부모 찾기 (Swift) (0) | 2022.11.11 |