๊ด€๋ฆฌ ๋ฉ”๋‰ด

C-log

๐Ÿ’ก23881๋ฒˆ ๋ณธ๋ฌธ

๐Ÿง Algorithm/Baekjoon๐Ÿ’ก

๐Ÿ’ก23881๋ฒˆ

4:Bee 2024. 1. 20. 11:22
728x90

์šฐ์„  ๋‚ด๊ฐ€ ๋จผ์ € ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋˜ ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑ์„ ํ–ˆ๋‹ค. ์„ ํƒ์ •๋ ฌ์€ ์„ ํƒ๋œ ๊ฐ’์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๊ฐ’๋“ค๊ณผ ๋ชจ๋‘ ๋น„๊ตํ•˜๊ณ  ๋‚œ๋‹ค์Œ์— ๋ณ€ํ™”๊ฐ€ ๋˜์—ˆ์„ ๋•Œ๋งŒ cnt๋ณ€์ˆ˜์— ๊ฐ’์„ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  ์กฐ๊ฑด์— ์ถฉ์กฑ๋˜๋Š” ๊ฐ’๋“ค์„ printํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘์„ฑ์„ ํ•˜๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” ํ•จ์ˆ˜ ๋‚ด๋ถ€์— ์žˆ๋Š” for๋ฌธ์€ local์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋ฃจํ”„๊ฐ€ ๋Œ์•„๊ฐ€๋Š” ๋ฒ”์œ„๊ฐ€ ์ค„์–ด๋“ค๋ฉด์„œ ์†๋„๋„ global๋กœ ๋‘์—ˆ์„ ๋•Œ ๋ณด๋‹ค ๋ฏธ์„ธํ•˜๊ฒŒ ํฌ๊ธฐ๊ฐ€ ์ค„์–ด๋“œ๋Š” ๊ฑธ๋กœ ์ดํ•ดํ–ˆ๋‹ค.

import sys
n, k = map(int, sys.stdin.readline().split())
N = list(map(int, sys.stdin.readline().split()))
cnt = 0


def selection(N):
    global cnt

    for last in range(len(N)-1, -1, -1):
        max = last
        for j in range(last, -1, -1):
            if N[max] < N[j]:
                max = j

        if last != max:
            cnt += 1
            N[max], N[last] = N[last], N[max]
            if cnt == k:
                print(N[max], N[last])
                exit()
    print(-1)


selection(N)

์ด๋ ‡๊ฒŒ local๋กœ ํ’€์–ด๋‚ด๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์ง€๋งŒ global๋ฐฉ์‹์œผ๋กœ ํ’€์–ด๋‚ด๋Š” ๋ฐฉ์‹์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.(๋‚ด๊ฐ€ ์ง์ ‘ input์„ ํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.)

 
N = [3, 1, 2, 5, 4]
cnt = 0
for i in range(len(N)):
    _max = N.index(max(N[:i+1]))
    if i != _max:
        N[i], N[_max] = N[_max], N[i]
        cnt += 1
        if cnt == 2:
            print(N[_max], N[i])
print(N)

์—ฌ๊ธฐ์„œ max๊ฐ€ for๋ฌธ์˜ ํ˜•ํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์žฅ ํฐ๊ฐ’์„ ์„ ๋ณ„ํ•˜๊ณ  ๋ฌธ์ œ์˜ ์กฐ๊ฑด ๋Œ€๋กœ i์™€ max๊ฐ€ ๊ฐ™์ง€ ์•Š๋‹ค๋ฉด ์„œ๋กœ swap์„ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์•Œ๋ฉด ์‰ฝ์ง€๋งŒ ์ดํ•ดํ•˜๊ณ  ์•Œ์•„๊ฐ€์ง€ ์•Š์œผ๋ฉด ์–ด๋ ต๊ธฐ๋งŒํ•œ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ํ•œ๋™์•ˆ ๋”ฐ๋ถ„ํ•จ์„ ๋Š๊ผˆ์ง€๋งŒ ๋‹ค์‹œ ์ด ๋ฌ˜ํ•œ ์žฌ๋ฏธ๋ฅผ ๋Š๋ผ๊ณ  ์žˆ๋‹ค.

728x90
Comments