728x90

1. ๋ฌธ์ œ ์š”์•ฝ

์ขŒํ‘œ ํ‰๋ฉด์„ ์ข‹์•„ํ•˜๋Š” ์ง„์ˆ˜๋Š” x์ถ•๊ณผ y์ถ•์ด ์ง๊ตํ•˜๋Š” 2์ฐจ์› ์ขŒํ‘œํ‰๋ฉด์— ์ ์„ ์ฐ์œผ๋ฉด์„œ ๋†€๊ณ  ์žˆ์Œ
์ง„์ˆ˜๋Š” ๋‘ ์–‘์˜ ์ •์ˆ˜ k,d๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ ์„ ์ฐ์œผ๋ ค ํ•จ
์›์  (0,0)์œผ๋กœ๋ถ€ํ„ฐ x์ถ• ๋ฐฉํ–ฅ์œผ๋กœ a*k(a=0,1,2,3...), y์ถ• ๋ฐฉํ–ฅ์œผ๋กœ b*k(b=0,1,2,3...)๋งŒํผ ๋–จ์–ด์ง„ ์œ„์น˜์— ์ ์„ ์ฐ์Œ
์›์ ๊ณผ ๊ฑฐ๋ฆฌ๊ฐ€ d๋ฅผ ๋„˜๋Š” ์œ„์น˜์—๋Š” ์ ์„ ์ฐ์ง€ ์•Š์Œ -> ๋ฐ˜์ง€๋ฆ„์ด d์ธ ์› ์•ˆ์—์„œ ๋ชจ๋“  ๊ฒƒ์„ ํ•ด๊ฒฐํ•จ
k๊ฐ€ 2, d๊ฐ€ 4์ธ ๊ฒฝ์šฐ์—๋Š”
(0,0),(0,2),(0,4),(2,0),(2,2),(4,0) ์œ„์น˜์— ์ ์„ ์ฐ์–ด ์ด 6๊ฐœ์˜ ์ ์„ ์ฐ์Œ
์ •์ˆ˜ k์™€ ์›์ ๊ณผ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ d๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ ์ด ์ด ๋ช‡ ๊ฐœ ์ฐํžˆ๋Š”์ง€ returnํ•˜๋Š” solution ํ•จ์ˆ˜ ์™„์„ฑ

 

 

 

2. ์ฝ”๋“œ

#include <string>
#include <vector>
#include <cmath>

using namespace std;


long long solution(int k, int d) {
    long long answer = 0;
    
    for(long long i=0;i<=d;i+=k){
        int y = sqrt(pow(d,2)-pow(i,2));
        answer+=y/(long long)k+1;
    }
    
    return answer;
}

 

 

 

3. ํ•ด์„ค

์ด ๋ฌธ์ œ์—์„œ ๊ฐ€์žฅ ์ฃผ์˜ํ•ด์•ผํ•  ์ ์€ long long ์ด๋ผ๋Š” ์ž๋ฃŒํ˜•์œผ๋กœ ๋ณ€ํ™˜์ธ ๊ฒƒ ๊ฐ™๋‹ค

์›์ ๊ณผ์˜ ๊ฑฐ๋ฆฌ๊ฐ€ d๋ฅผ ๋„˜๋Š” ์œ„์น˜์—๋Š” ์ ์„ ์ฐ์ง€ ์•Š๋Š”๋‹ค๋Š” ์ „์ œ ์กฐ๊ฑด์€ ๋ฐ˜์ง€๋ฆ„์ด d์ธ ์› ์•ˆ์— ๋ชจ๋“  ์ ๋“ค์€ ์œ„์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ง๊ณผ ๊ฐ™๋‹ค

x ์ถ•์˜ ๋ฐฉํ–ฅ์œผ๋กœ๋Š” a*k, y ์ถ•์˜ ๋ฐฉํ–ฅ์œผ๋กœ๋Š” b*k ๋งŒํผ ๋–จ์–ด์ง„ ์œ„์น˜์— ์ ์„ ์ฐ๋Š”๋‹ค๊ณ ํ•˜์—ฌ์„œ k๋งŒํผ ์ฆ๊ฐ€ํ•˜๋Š” for.๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค

 int y = sqrt(pow(d,2)-pow(i,2));

 

y์˜ ์ตœ๋Œ“๊ฐ’์„ ์œ„์˜ ์ฝ”๋“œ๋กœ ๊ตฌํ•˜๊ณ , ํ•ด๋‹น ์ตœ๋Œ€ y๊ฐ’/k ๋ฅผ ํ•˜๋ฉด ๊ทธ ์•ˆ์— b*k๋ฅผ ๋งŒ์กฑํ•˜๋Š” ๊ฐฏ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๊ณ , 0์ธ๊ฒฝ์šฐ๋ฅผ ํฌํ•จํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— +1์„ ํ•ด์ค€๋‹ค

 

 

 

 

 

 

 

 

 

 

๋ฐ˜์‘ํ˜•

+ Recent posts