250x250
Link
๋‚˜์˜ GitHub Contribution ๊ทธ๋ž˜ํ”„
Loading data ...
Notice
Recent Posts
Recent Comments
๊ด€๋ฆฌ ๋ฉ”๋‰ด

Data Science LAB

[Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต level2 (์ ์ฐ๊ธฐ) ๋ณธ๋ฌธ

๐Ÿ“ Coding Test/Programmers

[Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต level2 (์ ์ฐ๊ธฐ)

ใ…… ใ…œ ใ…” ใ…‡ 2022. 12. 13. 05:13
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๋ฅผ ๋„˜๋Š” ์œ„์น˜์—๋Š” ์ ์„ ์ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, k๊ฐ€ 2, d๊ฐ€ 4์ธ ๊ฒฝ์šฐ์—๋Š” (0, 0), (0, 2), (0, 4), (2, 0), (2, 2), (4, 0) ์œ„์น˜์— ์ ์„ ์ฐ์–ด ์ด 6๊ฐœ์˜ ์ ์„ ์ฐ์Šต๋‹ˆ๋‹ค.

์ •์ˆ˜ k์™€ ์›์ ๊ณผ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ d๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ ์ด ์ด ๋ช‡ ๊ฐœ ์ฐํžˆ๋Š”์ง€ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜์„ธ์š”.

 

 

 

 

 

 

2. ์ œํ•œ ์‚ฌํ•ญ

  • 1 ≤ k ≤ 1,000,000
  • 1 ≤ d ≤ 1,000,000

 

 

 

 

 

 

 

3. ๋‚ด ํ’€์ด

import math

def solution(k, d):
    answer = 0
    
    for i in range(0,d+1,k):
        answer += math.floor((d**2 - i**2)**0.5//k)+1
    
    return answer

 

1. for ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ 0๋ถ€ํ„ฐ d๊นŒ์ง€ step = k๋กœ ๋ฐ˜๋ณต

2. ์œ ํด๋ผ๋””์•ˆ ๊ฑฐ๋ฆฌ ๊ณต์‹์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—  d^2 - i^2 ์„ ์‚ฌ์šฉํ•˜์—ฌ (i,j)์ขŒํ‘œ์—์„œ j์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๊ตฌํ•จ

3. j์˜ ์ตœ๋Œ“๊ฐ’์„ k๋กœ ๋‚˜๋ˆˆ ๋ชซ์— 1์„ ๋”ํ•œ ๊ฐ’์„ answer์— ์ถ”๊ฐ€ (k์นธ์”ฉ ์ด๋™ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ)

728x90
Comments