눈치우기 (boj 26215)
2022. 12. 19. 13:24ㆍboj
https://www.acmicpc.net/problem/26215
26215번: 눈 치우기
집 2와 집 3 앞의 눈을 치우고, 집 2와 집 3 앞의 눈을 치우고, 집 1과 집 3 앞의 눈을 치운 뒤 집 3 앞의 눈을 두 번 치우면 5분만에 모든 집 앞의 눈을 치울 수 있다.
www.acmicpc.net
[26215번: 눈 치우기
집 2와 집 3 앞의 눈을 치우고, 집 2와 집 3 앞의 눈을 치우고, 집 1과 집 3 앞의 눈을 치운 뒤 집 3 앞의 눈을 두 번 치우면 5분만에 모든 집 앞의 눈을 치울 수 있다.
내가 문제를 봤을 때 접근한 방식은
가장 큰 값을 찾고, 2번째로 큰 친구를 찾는데. 가장 큰값이 0 이면 프로그램을 종료하고 리턴하는 방식을 이용했다.
int solution(int n)
{
while (true) {
int biggest = get_max(n, -1);
int bigger = get_max(n, biggest);
if (biggest == -1)
break ;
--map[biggest];
if (bigger != -1)
--map[bigger];
++cnt;
}
return (cnt);
}
사실 위와 같은 방식은 n 의 최대값이 100, 그리고 biggest의 값이 2000 이하로 들어오기 때문에
최대 로 돈다고 가정 하고 돌렸을때 2000000번정도 함수를 도는것 같았다. 따라서 경우가 조금더 커진다면
효율적으로 로직을 구상해보려고 노력 해야 할 듯 하다 .
'boj' 카테고리의 다른 글
| 1697 숨바꼭질. (0) | 2022.12.21 |
|---|---|
| 1021 회전하는 큐. (0) | 2022.12.21 |
| 수열의 합 1024 (0) | 2022.12.21 |
| 1012 유기농 배추. (0) | 2022.12.20 |
| 1010 다리놓기 (0) | 2022.12.19 |