1/24 Coding Test

๊น€ํƒœ์ค€ยท2024๋…„ 1์›” 26์ผ
0

Coding Test - BOJ

๋ชฉ๋ก ๋ณด๊ธฐ
55/64
post-thumbnail

โœ… Coding Test

๐ŸŽˆ 3020 ๊ฐœ๋˜ฅ๋ฒŒ๋ ˆ

๊ฐœ๋˜ฅ๋ฒŒ๋ ˆ ํ•œ ๋งˆ๋ฆฌ๊ฐ€ ์žฅ์• ๋ฌผ(์„์ˆœ, ์ข…์œ ์„)์œผ๋กœ ๊ฐ€๋“์ฐฌ ๋™๊ตด์— ๋“ค์–ด๊ฐ”๋‹ค. ๋™๊ตด์˜ ๊ธธ์ด๋Š” N๋ฏธํ„ฐ์ด๊ณ  ๋†’์ด๋Š” H๋ฏธํ„ฐ์ด๋‹ค. (N์€ ์ง์ˆ˜), ์ฒซ ์žฅ์• ๋ฌผ์€ ํ•ญ์ƒ ์„์ˆœ์ด๊ณ  ๊ทธ ๋‹ค์Œ์—๋Š” ์ข…์œ ์„๊ณผ ์„์ˆœ์ด ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ ๋“ฑ์žฅํ•œ๋‹ค.

๊ฐœ๋˜ฅ๋ฒŒ๋ ˆ๋Š” ์žฅ์• ๋ฌผ์„ ํ”ผํ•˜์ง€ ์•Š๊ณ  ์ผ์ง์„ ์œผ๋กœ ์ง€๋‚˜๊ฐ€๋ฉฐ ๋ชจ๋“  ์žฅ์• ๋ฌผ์„ ํŒŒ๊ดดํ•œ๋‹ค.
๊ฒฐ๊ณผ์ ์œผ๋กœ ๋™๊ตด ํฌ๊ธฐ, ๋†’์ด, ๋ชจ๋“  ์žฅ์• ๋ฌผ์˜ ํฌ๊ธฐ๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, ๊ฐœ๋˜ฅ๋ฒŒ๋ ˆ๊ฐ€ ํŒŒ๊ดดํ•ด์•ผ ํ•˜๋Š” ์žฅ์• ๋ฌผ์˜ ์ตœ์†Ÿ๊ฐ’๊ณผ ๊ทธ๋Ÿฌํ•œ ๊ตฌ๊ฐ„์ด ์ด ๋ช‡ ๊ฐœ ์žˆ๋Š”์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฌธ์ œ.

import sys
input = sys.stdin.readline

n, h = map(int, input().split())
seok = []
jong = []
for i in range(n):
    if i % 2 == 0:
        seok.append(int(input()))
    else:
        jong.append(int(input()))

seok.sort()
jong.sort()

def binary_search(array, target):
    start, end = 0, len(array)
    while start < end:
        mid = (start + end-1) // 2
        if array[mid] <= target:
            start = mid + 1
        else:
            end = mid
    return len(array) - end

answer = n
cnt = 0

for i in range(1, h+1):
    seok_cnt = binary_search(seok, i-1)
    jong_cnt = binary_search(jong, h-i)
    if answer > seok_cnt + jong_cnt:
        answer = seok_cnt + jong_cnt
        cnt = 1
    elif answer == seok_cnt + jong_cnt:
        cnt += 1

print(answer, cnt)

< ํ•ด์„ค >

๋ˆ„์ ํ•ฉ์ด ์•„๋‹Œ ์ด๋ถ„ํƒ์ƒ‰ ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์‹œ๊ฐ„ ํˆฌ์ž๋ฅผ ์˜ค๋ž˜ ํ•œ ๋ฌธ์ œ.
๋– ์˜ฌ๋ฆฐ ์•„์ด๋””์–ด๋กœ๋Š” ์„์ˆœ์€ ๋ฐ‘์—์„œ ์‹œ์ž‘, ์ข…์œ ์„์€ ์œ„์—์„œ ์‹œ์ž‘ํ•˜๊ธฐ์— ์ด๋ฅผ ๊ณ ๋ คํ•ด์ค˜์•ผ ํ•œ๋‹ค.
๊ฐœ๋˜ฅ๋ฒŒ๋ ˆ๊ฐ€ n๊ธธ์ด์˜ ๋™๊ตด์„ ํ†ต๊ณผํ•˜๋Š”๋ฐ ์žˆ์–ด ๋ฐฉ๋ฒ•์€ ์ด h๊ฐœ๋‹ค.
๊ทธ๋ ‡๊ธฐ์— h๋ฒˆ ๋งŒํผ์˜ loop๋ฅผ ๋Œ๋ฉฐ ์„์ˆœ, ์ข…์œ ์„์˜ upper bound๋ฅผ ํ™•์ธํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์„์ˆœ๊ณผ ์ข…์œ ์„์˜ ์‹œ์ž‘ ์œ„์น˜๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ๋งž์ถฐ์ค„ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.
h๋ฒˆ ๋ฃจํ”„๋ฅผ ๋Œ๋ ค ๊ฐ ์„์ˆœ, ์ข…์œ ์„์˜ upper bound๋ฅผ ๊ตฌํ•ด ํ†ต๊ณผํ•˜๋Š” ์žฅ์• ๋ฌผ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•ด์ฃผ๊ณ  ์ด๋ฅผ ๋น„๊ตํ•ด๊ฐ€๋ฉฐ answer (์žฅ์• ๋ฌผ ์ตœ์†Œ ํ†ต๊ณผ ๊ฐœ์ˆ˜), cnt(h๋ฒˆ ์ค‘ answer ๋งŒํผ ํ†ต๊ณผํ•˜๋Š” ํšŸ์ˆ˜)๋ฅผ ๊ตฌํ•œ๋‹ค.

profile
To be a DataScientist

0๊ฐœ์˜ ๋Œ“๊ธ€