๋ชฉ์ฐจ
๋ฌธ์
ํฌ๊ธฐ๊ฐ 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)) #๋ฌธ์์ด๋ก ์ถ๋ ฅ
์ฝ๋ฉํธ
์ฒ์์ผ๋ก ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด์ ๋ค๋ค๋ณด์๋ค!
์ฌ์ค ์์ง์ ์ ๋๋ก ์์ง๋ ๋ชปํ๋ค๊ณ ์๊ฐํ๋๋ฐ
์ด๋ค ๋์์ค์ธ์ง๋ ๊ฐ์ด ์ค๋ ๊ฒ ๊ฐ๋ค.
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด์๋ ํฌ์คํ ์ ๋จ๊ธธ ์์ !
'๐ฆ | ์ฝ๋ฉํ ์คํธ ์ฐ์ต > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฐฑ์ค 1068 ํธ๋ฆฌ (0) | 2023.04.12 |
---|---|
[Python] ๋ฐฑ์ค 23883 ์๊ณ ๋ฆฌ์ฆ ์์ - ์ ํ ์ ๋ ฌ 3 (0) | 2023.04.12 |
[Python] ๋ฐฑ์ค 1920 ์ ์ฐพ๊ธฐ (0) | 2022.03.28 |
[Python] ๋ฐฑ์ค 1966๋ฒ ํ๋ฆฐํฐ ํ (0) | 2022.03.28 |
[Python] ๋ฐฑ์ค 10951๋ฒ A+B - 4 (0) | 2022.01.10 |
๋๊ธ