๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿฆ„ | ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต/BOJ

[Python] ๋ฐฑ์ค€ 1083 ์†ŒํŠธ

by KASSID 2022. 3. 28.

๋ชฉ์ฐจ

    728x90

    ๋ฌธ์ œ

    ํฌ๊ธฐ๊ฐ€ N์ธ ๋ฐฐ์—ด A๊ฐ€ ์žˆ๋‹ค. ๋ฐฐ์—ด์— ์žˆ๋Š” ๋ชจ๋“  ์ˆ˜๋Š” ์„œ๋กœ ๋‹ค๋ฅด๋‹ค. ์ด ๋ฐฐ์—ด์„ ์†ŒํŠธํ•  ๋•Œ, ์—ฐ์†๋œ ๋‘ ๊ฐœ์˜ ์›์†Œ๋งŒ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ , ๊ตํ™˜์€ ๋งŽ์•„๋ด์•ผ S๋ฒˆ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ, ์†ŒํŠธํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์‚ฌ์ „์ˆœ์œผ๋กœ ๊ฐ€์žฅ ๋’ท์„œ๋Š” ๊ฒƒ์„ ์ถœ๋ ฅํ•œ๋‹ค.

    ์ž…๋ ฅ

    ์ฒซ์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค. N์€ 50๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ๊ฐ ์›์†Œ๊ฐ€ ์ฐจ๋ก€๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. ์ด ๊ฐ’์€ 1000000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. ๋งˆ์ง€๋ง‰ ์ค„์—๋Š” S๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. S๋Š” 1000000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์Œ์ด ์•„๋‹Œ ์ •์ˆ˜์ด๋‹ค.

    ์ถœ๋ ฅ

    ์ฒซ์งธ ์ค„์— ๋ฌธ์ œ์˜ ์ •๋‹ต์„ ์ถœ๋ ฅํ•œ๋‹ค.

    ์˜ˆ์ œ ์ž…๋ ฅ 

    7
    10 20 30 40 50 60 70
    1
    

    ์˜ˆ์ œ ์ถœ๋ ฅ 1

    20 10 30 40 50 60 70
    

    ์˜ˆ์ œ ์ž…๋ ฅ 2

    5
    3 5 1 2 4
    2
    

    ์˜ˆ์ œ ์ถœ๋ ฅ 2

    5 3 2 1 4
    

    ์˜ˆ์ œ ์ž…๋ ฅ 3

    10
    19 20 17 18 15 16 13 14 11 12
    5
    

    ์˜ˆ์ œ ์ถœ๋ ฅ 3

    20 19 18 17 16 15 14 13 12 11

     


    ์ฝ”๋“œ

    N = int(input())
    A = list(map(int, input().split()))
    S = int(input())
    
    i = 0
    while(True):
        if(S == 0 or i == N): #๊ธฐํšŒ ์†Œ๋ชจ ํ˜น์€ ๋ชจ๋“  ์ •๋ ฌ ์™„๋ฃŒ
            break
        #์ตœ๋Œ€๊ฐ’ ์กฐ์‚ฌ
        if(S>N): #S๊ฐ€ N๋ณด๋‹ค ํด ๋•Œ๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ค‘ ์ตœ๋Œ€๊ฐ’ ์กฐ์‚ฌ
            Max = A.index(max(A[i:]))
        else:
            if(N-i >= N-(i+S+1)): #์ตœ๋Œ€๊ฐ’ ์ •๋ ฌ์ œ์™ธ ํ›„ ๋‚จ์€ N์˜ ๊ฐœ์ˆ˜๊ฐ€ ์กฐ์‚ฌํ•  ๊ฐœ์ˆ˜๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๋ฉด
                Max = A.index(max(A[i:i+S+1]))
            else: #์กฐ์‚ฌํ•  ๊ฐœ์ˆ˜๊ฐ€ ๋‚จ์€ N๋ณด๋‹ค ํฌ๋‹ค๋ฉด
                Max = A.index(max(A[i:])) #์Šฌ๋ผ์ด์‹ฑ ์˜ค๋ฅ˜ ์˜ˆ์™ธ์ฒ˜๋ฆฌ
        if(Max != i): #๋ฒ”์œ„ ๋‚ด ์ตœ๋Œ€๊ฐ’์ด ๊ฐ€์žฅ ์•ž์— ์œ„์น˜ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ
        	#Swap
            temp = A[Max]
            A[Max] = A[Max-1]
            A[Max-1] = temp
            S -= 1 #๊ธฐํšŒ์†Œ์ง„
        else: #๋ฒ”์œ„ ๋‚ด ์ตœ๋Œ€๊ฐ’์ด ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ๊ฒฝ์šฐ == ์ •๋ ฌํ•  ํ•„์š” ์—†์Œ
            i += 1 #์กฐ์‚ฌ๋ฒ”์œ„๋ฅผ ๋‹ค์Œ ์นธ๋ถ€ํ„ฐ๋กœ CHG'
    print(' '.join(str(s) for s in A)) #๋ฌธ์ž์—ด๋กœ ์ถœ๋ ฅ

     

    ์ฝ”๋ฉ˜ํŠธ

    ์ฒ˜์Œ์œผ๋กœ ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด์„œ ๋‹ค๋ค„๋ณด์•˜๋‹ค!

    ์‚ฌ์‹ค ์•„์ง์€ ์ œ๋Œ€๋กœ ์•Œ์ง€๋Š” ๋ชปํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š”๋ฐ

    ์–ด๋–ค ๋‰˜์–‘์Šค์ธ์ง€๋Š” ๊ฐ์ด ์˜ค๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

    ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด์„œ๋Š” ํฌ์ŠคํŒ…์„ ๋‚จ๊ธธ ์˜ˆ์ •!

    ๋Œ“๊ธ€