https://school.programmers.co.kr/learn/courses/30/lessons/140107
๋ฌธ์ ์ค๋ช
์ขํํ๋ฉด์ ์ข์ํ๋ ์ง์๋ x์ถ๊ณผ y์ถ์ด ์ง๊ตํ๋ 2์ฐจ์ ์ขํํ๋ฉด์ ์ ์ ์ฐ์ผ๋ฉด์ ๋๊ณ ์์ต๋๋ค. ์ง์๋ ๋ ์์ ์ ์ k, d๊ฐ ์ฃผ์ด์ง ๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์ ์ฐ์ผ๋ ค ํฉ๋๋ค.
- ์์ (0, 0)์ผ๋ก๋ถํฐ x์ถ ๋ฐฉํฅ์ผ๋ก a*k(a = 0, 1, 2, 3 ...), y์ถ ๋ฐฉํฅ์ผ๋ก b*k(b = 0, 1, 2, 3 ...)๋งํผ ๋จ์ด์ง ์์น์ ์ ์ ์ฐ์ต๋๋ค.
- ์์ ๊ณผ ๊ฑฐ๋ฆฌ๊ฐ d๋ฅผ ๋๋ ์์น์๋ ์ ์ ์ฐ์ง ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, k๊ฐ 2, d๊ฐ 4์ธ ๊ฒฝ์ฐ์๋ (0, 0), (0, 2), (0, 4), (2, 0), (2, 2), (4, 0) ์์น์ ์ ์ ์ฐ์ด ์ด 6๊ฐ์ ์ ์ ์ฐ์ต๋๋ค.
์ ์ k์ ์์ ๊ณผ์ ๊ฑฐ๋ฆฌ๋ฅผ ๋ํ๋ด๋ ์ ์ d๊ฐ ์ฃผ์ด์ก์ ๋, ์ ์ด ์ด ๋ช ๊ฐ ์ฐํ๋์ง return ํ๋ solution ํจ์๋ฅผ ์์ฑํ์ธ์.
๋ด ํ์ด
#include <string>
#include <vector>
#include <cmath>
using namespace std;
long long solution(int k, int d)
{
// y๋ 0์ผ ๋ ์ ์ ์
long long answer = d/k + 1;
// x^2 + y^2 = d^2 ๊ณต์์ ๋ง์ถฐ x = i ์ผ ๋ 1์ด์์ y์ ๊ฐ์ ๊ตฌํ๋ค.
for(long long i = 0; i < d; i += k)
answer += (long long)sqrt((long long)d*d - i*i)/k;
return answer;
}
'๐ฅ๏ธ Study Note > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - ์บ์(C++) (0) | 2023.07.20 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - ํํ(C++) (0) | 2023.07.18 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - 124 ๋๋ผ์ ์ซ์(C++) (0) | 2023.07.14 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - ๊ดํธ ํ์ ํ๊ธฐ(C++) (0) | 2023.07.12 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - ๋ง๋ฒ์ ์๋ฆฌ๋ฒ ์ดํฐ(C++) (0) | 2023.07.11 |