[백준] 1484.다이어트 (Swift)
https://www.acmicpc.net/problem/1484
풀이
문제에서 나오는 G 는 (현재)^2 - (예전)^2 으로 표현할 수 있습니다. G 가 자연수이기도 하고 문제를 읽어보면 현재 몸무게가 예전 몸무게보다 값이 크다는 것을 알 수 있습니다.
문제의 조건을 만족하는 모든 경우의 수를 출력해야하기 때문에 예전 몸무게를 1, 현재 몸무게를 2라고 생각하고 차례차례 탐색해보겠습니다.
(현재)^2 - (예전)^2 라는 식을 조건식이라고 칭하도록 하겠습니다.
조건식이 입력받은 값 G 보다 작다면, 현재 몸무게값을 1 증가시킵니다. 그래야 두 몸무게간의 격차가 벌어져 조건식을 만족할 수 있는 가능성이 올라가기 때문입니다.
반대로 조건식이 G 보다 크다면, 예전 몸무게값을 1 증가시킵니다. 두 몸무게간의 격차를 줄이기 위함입니다.
만약 조건식이 만족된다면 해당 몸무게는 정답 중 하나이기 때문에 저장해놓습니다. 그리고 현재 몸무게와 예전 몸무게를 모두 1 증가시켜줍니다. 조건식이 만족해 정답을 하나 찾았으니 여기서 격차를 벌이거나 줄이는것은 의미가 없기 때문입니다.
만약 현재 몸무게와 예전 몸무게의 차이가 1인데, 조건식이 G 보다 크다면 프로세스를 종료하고 정답을 출력합니다.
이 경우의 수 이후로 모든 조건식은 G 보다 큰 값이 도출되기 때문입니다.
이렇게 투포인터의 개념을 응용하여 코드를 작성한다면 어렵지 않게 문제를 풀이할 수 있습니다.
코드
'코딩테스트 > 백준' 카테고리의 다른 글
[백준] 1790.수 이어 쓰기 2 (Swift) (0) | 2022.05.23 |
---|---|
[백준] 2467.용액 (Swift) (0) | 2022.05.23 |
[백준] 5014.스타트링크 (Swift) (0) | 2022.05.22 |
[백준] 1976.여행 가자 (Swift, Java) (0) | 2022.05.20 |
[백준] 16197.두 동전 (Swift) (0) | 2022.05.14 |