D2
Problem
SW Expert Academy ์ด์งํ์
SW Expert Academy
SW ํ๋ก๊ทธ๋๋ฐ ์ญ๋ ๊ฐํ์ ๋์์ด ๋๋ ๋ค์ํ ํ์ต ์ปจํ ์ธ ๋ฅผ ํ์ธํ์ธ์!
swexpertacademy.com
Solution
1. ์ด์ง ํ์์ ํตํด ์ํ๋ ๊ฐ์ ์ฐพ์๋ณด๊ธฐ
2. ์ด์ง ํ์์ ์ํด ์ค์๊ฐ์ ์ค์ ํ๊ณ ์ด๋ณด๋ค ์์ผ๋ฉด ์ผ์ชฝ์ ํ์, ํฌ๋ฉด ์ค๋ฅธ์ชฝ์ ํ์ํ๋ค.
3. ํ์ ์๋๋ฅผ ์ฌ๋ ค์ฃผ๊ธฐ ์ํด์, ์ฐพ๊ณ ์ ํ๋ ๊ฐ์ด ์ ๋ ๊ฐ์ด๋ฉด ๋ฐ๋ก ๋๋ธ๋ค.
4. ๋ฌธ์ ์์ ์ค์๊ฐ์ ๊ณ์ฐํ๋ ๊ณต์์ด ์ฃผ์ด์ง๊ธฐ์ ํ์ฉํ์.
5. ์นด์ดํธํ๋ ์์น๋ฅผ ์ฃผ์ํ์.
Code
def binary_search(n, key): # While๋ก ๊ตฌํ
cnt = 0
start = 1
end = n
if 1 == key or n == key: # key๊ฐ ์ ๋ ๊ฐ์ธ ๊ฒฝ์ฐ
return 0
elif key > end or key < start: # ๋ต์ด ๋์ฌ ์ ์๋ ๊ฒฝ์ฐ
return 0
else:
while start <= end: # ๊ฐ์ด๋ฐ๋ถํฐ ํ์
c = int((start + end) / 2)
if c == key: # ์ฐพ์ผ๋ฉด ๋๋
break
elif c > key: # key๊ฐ ์ค์๊ฐ๋ณด๋ค ์์ผ๋ฉด ์ผ์ชฝ ํ์
end = c
cnt += 1
else: # key๊ฐ ์ค์๊ฐ๋ณด๋ค ํฌ๋ฉด ์ค๋ฅธ์ชฝ ํ์
start = c
cnt += 1
return cnt # ํ์ํ ํ์ ๋ฆฌํด
for test_case in range(1, int(input()) + 1):
P, A, B = map(int, input().split())
a = binary_search(P, A)
b = binary_search(P, B)
print('#'+str(test_case), end=" ")
if a > b:
print('B')
elif b > a:
print('A')
elif a==b:
print('0')
<๋ถ์กฑํ ๋ถ๋ถ์ ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์๋ฉด ์ ์๊ฒ ๋์์ด ๋ฉ๋๋ค!>
๋ฐ์ํ
'๐ STUDY > ์๋ฃ๊ตฌ์กฐ & ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| 1954. ๋ฌํฝ์ด ์ซ์ (0) | 2023.03.06 |
|---|---|
| 1961. ์ซ์ ๋ฐฐ์ด ํ์ (0) | 2023.03.05 |
| 4843. [ํ์ด์ฌ S/W ๋ฌธ์ ํด๊ฒฐ ๊ธฐ๋ณธ] 2์ผ์ฐจ - ํน๋ณํ ์ ๋ ฌ (0) | 2023.03.05 |
| 1209. [S/W ๋ฌธ์ ํด๊ฒฐ ๊ธฐ๋ณธ] 2์ผ์ฐจ - Sum (0) | 2023.03.05 |
| 2001. ํ๋ฆฌ ํด์น (0) | 2023.03.05 |