https://www.acmicpc.net/problem/10973
10973๋ฒ: ์ด์ ์์ด
์ฒซ์งธ ์ค์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ์์ด์ ์ด์ ์ ์ค๋ ์์ด์ ์ถ๋ ฅํ๋ค. ๋ง์ฝ, ์ฌ์ ์์ผ๋ก ๊ฐ์ฅ ์ฒ์์ ์ค๋ ์์ด์ธ ๊ฒฝ์ฐ์๋ -1์ ์ถ๋ ฅํ๋ค.
www.acmicpc.net
https://www.acmicpc.net/problem/10972
10972๋ฒ: ๋ค์ ์์ด
์ฒซ์งธ ์ค์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ์์ด์ ๋ค์์ ์ค๋ ์์ด์ ์ถ๋ ฅํ๋ค. ๋ง์ฝ, ์ฌ์ ์์ผ๋ก ๋ง์ง๋ง์ ์ค๋ ์์ด์ธ ๊ฒฝ์ฐ์๋ -1์ ์ถ๋ ฅํ๋ค.
www.acmicpc.net
์ด์ ์์ด ์ฐพ๊ธฐ
์์ ) 2 3 1 4 5 ์ ์ด์ ์์ด ์ฐพ๊ธฐ
- ์์ด์ ๋งจ ๋(์ค๋ฅธ์ชฝ)์์๋ถํฐ ์ํํ๋ฉฐ ์ผ์ชฝ ์ซ์๊ฐ ์ค๋ฅธ์ชฝ ์ซ์๋ณด๋ค ์ฒ์์ผ๋ก ์ปค์ง๊ฒ ๋๋ ๋ถ๋ถ์ ์ฐพ๋๋ค.
2 3 1 4 5
- ํฐ ์๋ฅผ ๋ค๋ก ๋ณด๋ด์ผ ํ๊ธฐ ๋๋ฌธ์ ํฐ ์์ ์๋ฆฌ ๊ตํํ ์๋ฅผ ํ์ํ๋ค.
์์์์ ํฐ ์๋ 3์ด๊ณ , ์ฐ๋ฆฌ๋ ์ด์ ์์ด์ ๊ตฌํด์ผ ํ๊ธฐ ๋๋ฌธ์ 3๋ณด๋ค ์์ ์๋ฅผ ๊ตํํด์ผ ํ๋ค.
๋ฐ๋ผ์ ์์ด์ ๋งจ ์ค๋ฅธ์ชฝ์์๋ถํฐ ์ํํ๋ฉฐ, ํฐ ์(์์์์๋ 3)๋ณด๋ค ์์ ์๋ฅผ ์ฐพ๋๋ค.
2 3 1 4 5
- ์ ๋จ๊ณ์์ ์ฐพ์ ์์ ์ 1์ ์๋ 3์ ์๋ฆฌ๋ก ์ฎ๊ฒจ์ค๋ค.
2 1 3 4 5
- ์ด์ ์์ด์ 2 1 ๊น์ง ์์ฑํ์๋ค.
2 1 x x x ์ธ ์์ด ์ค ๊ฐ์ฅ ๋ง์ง๋ง ์์ด์ ์ฐพ๋ ๊ฒ์ด ์ต์ข ๋ชฉํ์ด๋ฏ๋ก, ๋๋จธ์ง ์ค๋ฅธ์ชฝ ๋ถ๋ถ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํด์ค๋ค.
2 1 5 4 3
python ์ฝ๋
import sys
input = sys.stdin.readline
n = int(input())
data = list(map(int,input().split()))
if n==1:
print(-1)
exit()
# ์์ด์ ๋งจ ์ค๋ฅธ์ชฝ๋ถํฐ, ์ผ์ชฝ๊ฐ > ์ค๋ฅธ์ชฝ๊ฐ ๋ง์กฑํ๋ ์ธ๋ฑ์ค ์ฐพ๊ธฐ
idx = n
for i in range(n-1,0,-1):
if data[i-1] > data[i]:
idx = i-1
break
# ์์ผ๋ฉด -1์ ์ถ๋ ฅํ๊ณ ์ข
๋ฃ
if idx == n:
print(-1)
exit()
# ์๋ฆฌ๊ตํํ๊ธฐ
for i in range(n-1,idx,-1):
if data[i] < data[idx]:
data[i], data[idx] = data[idx], data[i]
break
# ๋๋จธ์ง ๋ถ๋ถ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ ๋ฐ ๊ฒฐ๊ณผ ์ถ๋ ฅ
answer = data[:idx+1] + sorted(data[idx+1:],reverse=True)
for i in range(n-1):
print(answer[i],end=' ')
print(answer[-1])
๋ค์ ์์ด ์ฐพ๊ธฐ
- ์ด์ ์์ด๊ณผ ๊ฐ์ ์๋ฆฌ์ด๋ค. ์ ์ ํ ๋ฑํธ๋ง ๋ฐ๊พธ์ด ์์ฑํ๋ฉด ๋๋ค.
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด > ๊ตฌํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค]2621๋ฒ: ์นด๋๊ฒ์ (0) | 2023.05.13 |
---|---|
[๋ฐฑ์ค]1913๋ฒ: ๋ฌํฝ์ด (0) | 2023.05.10 |
[๋ฐฑ์ค]17413๋ฒ: ๋จ์ด ๋ค์ง๊ธฐ 2 (0) | 2023.05.09 |
[๋ฐฑ์ค]1193๋ฒ: ๋ถ์์ฐพ๊ธฐ (0) | 2023.05.04 |
[๋ฐฑ์ค]17478๋ฒ: ์ฌ๊ทํจ์๊ฐ ๋ญ๊ฐ์? (0) | 2023.05.04 |