๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Develop ๐Ÿ’ป/Algorithm

๋ฐฑ์ค€ 1011 ํŒŒ์ด์ฌ- Fly me to the Alpha Centauri

by jungin 2021. 8. 13.

Intro


๋ฐฑ์ค€ ๊ธฐ๋ณธ์ˆ˜ํ•™1์—์„œ solved.ac ํ‹ฐ์–ด ๊ธฐ์ค€์œผ๋กœ ๊ณจ๋“œ5์ด๋ฉฐ ์ด์ „ ๋ฌธ์ œ๋“ค์€ ๋ชจ๋‘ ๋ธŒ๋ก ์ฆˆ์ž„์„ ๊ฐ์•ˆํ•˜๋ฉด ์ƒ๋‹นํžˆ ์–ด๋ ค์šด ์ˆ˜์ค€์ธ ๊ฒƒ ๊ฐ™๋‹ค. PS ์ดˆ๋ณด์ธ ๋‚˜๋Š” 1193 ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ ์ˆ˜์—ด์„ ์จ์„œ ๋˜‘๊ฐ™์ด ํ’€์—ˆ๊ธฐ์— ๋งŽ์ด ์–ด๋ ต์ง„ ์•Š์•˜๋‹ค. 

https://www.acmicpc.net/problem/1011


๊ฑฐ๋ฆฌ์— ๋”ฐ๋ฅธ ์žฅ์น˜ ์ž‘๋™ ํšŸ์ˆ˜

์ด ํ‘œ๋ฅผ ๋ณด๋ฉด ๊ทœ์น™์ด ๋ˆˆ์— ๋ณด์ธ๋‹ค. ์ƒ‰๊น”๋ณ„๋กœ n๊ตฐ์„ ์žก์•„๋ณด๋ฉด ์ฒซ๋ฒˆ์งธ ๊ตฐ์€ ์•ˆ์— ๊ฐœ์ˆ˜๊ฐ€ 2๊ฐœ, ๋‘๋ฒˆ์งธ ๊ตฐ์€ 4๊ฐœ, ์„ธ๋ฒˆ์งธ ๊ตฐ์€ 6๊ฐœ ์ด๋ ‡๋“ฏ n๊ตฐ ์•ˆ์— ์ด 2n๊ฐœ๊ฐ€ ๋“ค์–ด์žˆ๋‹ค. ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ, ๊ฑฐ๋ฆฌ๊ฐ€ ์–ด๋Š ๊ตฐ์— ์žˆ๋Š”์ง€๋ฅผ ๊ตฌํ–ˆ๋‹ค. ์ด๋ ‡๊ฒŒ n์„ ๊ตฌํ•œ ํ›„ ๊ฐ ๊ตฐ์„ ์ž˜ ๋ณด๋ฉด ๋”ฑ ๋ฐ˜์œผ๋กœ ๋‚˜๋‰˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ตฐ์—์„œ ๊ณผ๋ฐ˜์„ ๋„˜์–ด๊ฐ€๋ฉด 2n์„ ์ถœ๋ ฅ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด 2n - 1์„ ์ถœ๋ ฅํ–ˆ๋‹ค ! 

 

 

Python ์ฝ”๋“œ

import sys

n = int(sys.stdin.readline())
TestLIST = []
for i in range(n):
    TestLIST.append(list(map(int, sys.stdin.readline().split())))


def adsf(list):
    x = list[0]
    y = list[1]
    gap = y - x
    i = 0
    while 1:
        if i * (i + 1) / 2 - 2 * i <= gap <= i * (i + 1):
            break
        else:
            i += 1
    if i * (i + 1) >= gap > i * (i + 1) - i:
        return 2 * i
    else:
        return 2 * i - 1


for a in TestLIST:
    print(adsf(a))

 

๋Œ“๊ธ€