문제 설명
: 어떤 배열이 있을때 ai -1, a-2 값이 배열에 있거나 ai == 1이어야한다... 그런 경우의 가장 작은 경우를 구해라..
문제풀이 :
input 예시
4
1
8
7
42
output예시:
1
3
3
7
s가 주어질때
s가 8일때 -> 1, 3, 4 가능하다 size -> 3
7일때 -> 1, 2, 4 가능하다 size -> 3
42일때 -> 1, 3, 5, 7, 9, 11, 6
1, 3, 5, 6, 7, 9, 11 가능하다 7
s <= n^2 일때 n이 가장작은 경우의 수이다
for (int i = 1; i < 5000; ++i) {
if (sum <= i * i) {
ans = i;
break;
}
}
틀린이유
처음에는 저렇게 풀지 않았지만 무한루프에 빠지는데 그 이유를 찾지 못했었다.
알고보니 다른 케이스가 하나 더 있었는데 찾지못했었다.
처음 풀이는 가장작은 사이즈를 유지하기 위해서 +2 씩 넣으면서 주어진 s에서 넣은 값들을 빼는 방향으로 진행했다
마지막에 남아 있는 수에서 예외를 처리하지 못해서 무한루프에 빠지고 말았다.
'코드포스 > div2' 카테고리의 다른 글
B. Two Tables (0) | 2021.08.02 |
---|---|
B. Gregor and the Pawn Game (0) | 2021.08.02 |
A. PizzaForces (3) | 2021.07.31 |
div2 - Cherry (0) | 2021.07.30 |