๋ฌธ์ ๋งํฌ : https://www.acmicpc.net/problem/1071
์ต์ข ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก๋ ์ด ๋ถ์ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ๋ค.
1. ์ฌ์ ์์ผ๋ก ๊ฐ์ฅ ์์ ๊ฒ์ ์ถ๋ ฅํด์ผ ํ๋ฏ๋ก ๋จผ์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ ํ๋ค.
2. [i] + 1 == [i +1]์ ์ฐพ์ผ๋ฉด,
2-1. [i + 1]๋ณด๋ค ํฐ ์ซ์๊ฐ ์๋ค๋ฉด, [i]์ [i+1]์ ์์๋ฅผ ๊ต์ฒดํ๋ค. 11112222 -> 22221111
2-2. [i + 1]๋ณด๋ค ํฐ ์ซ์ p๊ฐ ์๋ค๋ฉด, [i+1]์p๋ฅผ ๊ต์ฒดํ๋ค. 111122223 -> 111132222
N = int(input())
numList = list(map(int,input().split()))
# ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ
numList.sort()
for i in range(len(numList) - 1):
# print(numList[i], ' :: ', numList)
if (i > 0 and numList[i] == numList[i - 1]):
count = count +1
else:
count = 0
if (numList[i] + 1) == numList[i + 1]:
# i + 1 ์ด ์ต์๊ฐ์ด๋ผ๋ฉด
if (numList[-1] == numList[i + 1]):
temp = numList[-1]
del numList[-1]
numList.insert(i - count, temp)
# print('>', numList)
else:
# i + 1 ๋ค์์ผ๋ก ์ต์๊ฐ์ ์ฐพ์์ ๋ค์ ๊ฐ์ผ๋ก ๋ฃ์ด์ค
for nextIndex in range(i +2, len(numList)):
if numList[nextIndex] > numList[i + 1]:
temp = numList[nextIndex]
del numList[nextIndex]
numList.insert(i + 1, temp)
break
print(*numList)
1% ๋ฐ๋ก
์ฐธ๊ณ : https://www.acmicpc.net/board/view/117883
5
0 1 0 1 3
>> 0 0 3 1 1
2% ๋ฐ๋ก
์ฐธ๊ณ : https://www.acmicpc.net/board/view/111422
7
1 1 2 3 3 4 5
>> 1 1 3 2 4 3 5
9% ๋ฐ๋ก
9
1 1 1 1 2 2 2 2 2
>> 2 2 2 2 2 1 1 1 1
โ ์ฐจ ํ์ด
1. ๋จผ์ ์ ์ผ ์์ ์๋ฅผ 0๋ฒ์ ๋ฃ๋๋ค.
2. ๊ทธ๋ฆฌ๊ณ , 1๋ฒ๋ถํฐ i = i +1์ ๋ง์กฑํ์ง ์์ ์ซ์ ์ค์์ ์ต์๊ฐ์ ๊ฐ์ ธ์์ ๋ค์์ ๋ฃ์ด์ค๋ค.
>> ์ด๋ ๊ฒ ํ๋ฉด, 12 ๊ฐ์ ๊ฒฝ์ฐ 21์ ํด์ผ ํ๋๋ฐ ๊ทธ ์กฐ๊ฑด์ ๋ง์กฑํ์ง ๋ชปํ๊ฒ ๋๋ค.
N = int(input())
numList = list(map(int,input().split()))
# ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ
numList.sort()
# https://stackoverflow.com/questions/6142689/initialising-an-array-of-fixed-size-in-python
usedList = [False] * len(numList)
sortedList = [None] * len(numList)
# ์ฒ์ ์ซ์๋ ์ ์ผ ์์ ์ซ์ ?
sortedList[0] = numList[0]
usedList[0] = True
sortedIndex = 0
# print(len(numList))
# print(numList)
while(sortedIndex < (len(numList) -1) ):
print(sortedIndex, '>', sortedList)
print('ใด ', usedList)
possibleIndex = 0
for i in range(len(numList)):
# print(i, '>>', usedList[i], '>>', (sortedList[sortedIndex] + 1), '!=', numList[i])
if usedList[i] == False and (sortedList[sortedIndex] + 1) != numList[i]:
# print('match ? ')
possibleIndex = i
# ์ฌ๊ธฐ ๊ฐ์ ๋ค์ ๋ชป์ฐพ์ผ๋ฉด reset ...
break;
sortedIndex = sortedIndex + 1
usedList[possibleIndex] = True
sortedList[sortedIndex] = numList[possibleIndex]
print(*sortedList)
โก์ฐจ ํ์ด
1. ์ฌ์ ์์ผ๋ก ๊ฐ์ฅ ์์ ๊ฒ์ ์ถ๋ ฅํด์ผ ํ๋ฏ๋ก ๋จผ์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ ํ๋ค.
2. [i] + 1 == [i +1]์ ์ฐพ์ผ๋ฉด,
2-1. [i + 1]๋ณด๋ค ํฐ ์ซ์ p๊ฐ ์๋ค๋ฉด, [i + 1] ์ ์ฒด์ p์ ์ฒด๋ฅผ ๊ตํํ๋ค. 1111222233 -> 11113322
2-2. [i + 1]๋ณด๋ค ํฐ ์ซ์๊ฐ ์๋ค๋ฉด, [i]์ [i+1]์ ์์๋ฅผ ๊ต์ฒดํ๋ค. 11112222 -> 22221111
>> ์ด๋ ๊ฒํ๋ฉด, 1123345 ๊ฐ ์๋๊ฒฝ์ฐ 33์ด ๋ฌถ์ฌ์ 2์ ๋ฐ๊พธ๊ฒ ๋จ์ผ๋ก์จ, 1123354๊ฐ ๋์จ๋ค. (๋ต์ 1132435์ด๋ค)
N = int(input())
numList = list(map(int,input().split()))
# ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ
numList.sort()
for i in range(len(numList) - 1):
print(numList[i], ' :: ', numList)
if (i > 0 and numList[i] == numList[i - 1]):
count = count +1
else:
count = 0
# print(count)
if (numList[i] + 1) == numList[i + 1]:
nextIndex = i + 2
nextFound = False
while (nextIndex < len(numList)):
if numList[nextIndex] > numList[i + 1]:
next = numList[nextIndex]
nextFound = True
break
nextIndex = nextIndex + 1
nextIndex = i + 2
if (nextFound):
while(numList[nextIndex] == next) :
print('> ',numList[nextIndex],'=', numList)
next = numList[nextIndex]
del numList[nextIndex]
print(numList)
numList.insert(i + count + 1, next)
print(numList)
nextIndex = nextIndex + 1
# ๋ง์ง๋ง์ด๋ฉด ์ข
๋ฃ
if (nextIndex == len(numList)):
break
tempIndex = i + 1
if (not nextFound and tempIndex < len(numList)):
temp = numList[tempIndex]
while(numList[tempIndex] == temp) :
# print('>> ',numList[tempIndex],'=', numList)
del numList[tempIndex]
numList.insert(i - count, temp)
tempIndex = tempIndex + 1
# ๋ง์ง๋ง์ด๋ฉด ์ข
๋ฃ
if (tempIndex == len(numList)):
break
print(*numList)
'๐ค ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
โก๏ธ baekjoon. 1489 ๋๊ฒฐ [Gold I][python] (0) | 2023.06.29 |
---|---|
โก๏ธ baekjoon. 14501 ํด์ฌ [Silver III][python] (0) | 2023.06.28 |
baekjoon. 1083 ์ํธ [Gold V][python] (0) | 2023.06.15 |
์๊ณ ๋ฆฌ์ฆ ๊ฐ๋ . ์๋ฃ๊ตฌ์กฐ์์์ ํ๊ท ~ ์ต์ ์๊ฐ ๋ณต์ก๋ (0) | 2023.06.10 |
baekjoon. ํ์์ค ๋ฐฐ์ [Silver I] [python] (1) | 2023.06.08 |