๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ/Baejoon

[๋ฐฑ์ค€] 1193๋ฒˆ - ๋ถ„์ˆ˜์ฐพ๊ธฐ

๐Ÿ“„ ๋ฌธ์ œ

๋ฌดํ•œํžˆ ํฐ ๋ฐฐ์—ด์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ถ„์ˆ˜๋“ค์ด ์ ํ˜€์žˆ๋‹ค.

 

์ด์™€ ๊ฐ™์ด ๋‚˜์—ด๋œ ๋ถ„์ˆ˜๋“ค์ด 1/1 -> 1/2 -> 2/1 -> 3/1 -> 2/2 -> … ๊ณผ ๊ฐ™์€ ์ง€๊ทธ์žฌ๊ทธ ์ˆœ์„œ๋กœ ์ฐจ๋ก€๋Œ€๋กœ

1๋ฒˆ, 2๋ฒˆ, 3๋ฒˆ, 4๋ฒˆ, 5๋ฒˆ, ... ๋ถ„์ˆ˜๋ผ๊ณ  ํ•˜์ž.

 

X๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, X๋ฒˆ์งธ ๋ถ„์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

๐Ÿ‘€ ์ถœ์ œ์˜๋„

๋ถ„์ˆ˜๊ฐ€ ๋‚˜์—ด๋œ ๊ทœ์น™์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š”์ง€

๐Ÿงพ ์ฝ”๋“œ

num = int(input()) # ๋ช‡ ๋ฒˆ์งธ ๋ถ„์ˆ˜๋ฅผ ๊ตฌํ•  ๊ฒƒ์ธ์ง€ ์ž…๋ ฅ

line = 0
max_num = 0

while num > max_num : 
     line += 1 
     max_num += line
 
gap = max_num - num
 
if line % 2 == 0 : # line์ด ์ง์ˆ˜์ผ ๊ฒฝ์šฐ
    top = line - gap
    under = gap + 1
else : # line์ด ํ™€์ˆ˜์ผ ๊ฒฝ์šฐ
    top = gap + 1
    under = line - gap
print(top, '/', under)

๐Ÿ’ป ํ’€์ด์„ค๋ช…

1. input()๊ณผ int()์„ ์ด์šฉํ•ด์„œ ๋ช‡ ๋ฒˆ์งธ ๋ถ„์ˆ˜๋ฅผ ๊ตฌํ•  ๊ฒƒ์ธ์ง€ ์ž…๋ ฅ๋ฐ›์Šต๋‹ˆ๋‹ค.

2. while๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž…๋ ฅ๋ฐ›์€ ์ˆ˜๊ฐ€ max_num๋ณด๋‹ค ํด ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋ฉฐ ์ž…๋ ฅ๋ฐ›์€ ์ˆ˜๊ฐ€ ๋ช‡ ๋ฒˆ์งธ ๋ผ์ธ์— ์žˆ๋Š”์ง€์™€ ๋ผ์ธ์˜ ์ตœ๋Œ€๊ฐ’์€ ๋ฌด์—‡์ธ์ง€๋ฅผ ๊ตฌํ•ฉ๋‹ˆ๋‹ค.

3. ๋‚˜์—ด๋œ ๋ถ„์ˆ˜๋“ค์ด [1/1], [1/2 -> 2/1 ], [3/1 -> 2/2 -> 1/3] .. ์œผ๋กœ ์ง์ˆ˜์ผ ๊ฒฝ์šฐ, ๋ถ„์ž๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ์ด๊ณ  ๋ถ„๋ชจ๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ™€์ˆ˜์ผ ๊ฒฝ์šฐ, ๋ถ„์ž๊ฐ€ ๋‚ด๋ฆผ์ฐจ์ˆœ์ด๊ณ  ๋ถ„๋ชจ๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ์ž…๋‹ˆ๋‹ค.

์ด๋ฅผ ์‚ฌ์šฉํ•ด if๋ฌธ์œผ๋กœ ๋งŒ์•ฝ line์ด ์ง์ˆ˜์ผ ๊ฒฝ์šฐ ๋ถ„์ž๋Š” ํ•˜๋‚˜์”ฉ ์ฆ๊ฐ€ํ•˜๊ณ  ๋ถ„๋ชจ๋Š” ํ•˜๋‚˜์”ฉ ๊ฐ์†Œํ•˜๊ฒŒ, ํ™€์ˆ˜์ผ ๊ฒฝ์šฐ ๋ถ„์ž๋Š” ํ•˜๋‚˜์”ฉ ๊ฐ์†Œํ•˜๊ณ  ๋ถ„๋ชจ๋Š” ํ•˜๋‚˜์”ฉ ์ฆ๊ฐ€ํ•˜๋„๋ก ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“ ํ•™์Šต๋ฐฉ๋ฒ•

์–ด๋–ค ๊ทœ์น™์ด ์žˆ๋Š”์ง€ ํŒŒ์•…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ•œ๋‹ค.