๐ ๋ฌธ์
๋ง๋ฒ์ฌ ์์ด๋ ๊ทธ๋์ ๋ฐฐ์ด ๋ง๋ฒ์ ์ด์ฉํด ์ดํญ์ ์ ๋ฆฌํ๋ ค๊ณ ํ๋ค. ์ดํญ์ ์ ์ก๋ฉด์ฒด ๋ชจ์์ด๊ณ , ํ ๋ณ์ ๊ธธ์ด๋ ๋ชจ๋ 1์ด๋ค. ์์ด๊ฐ ๊ฐ์ง๊ณ ์๋ ์ดํญ์ N๊ฐ์ด๊ณ , ๊ฐ์ฅ ์ฒ์์ ์ดํญ์ ์ผ๋ ฌ๋ก ๋ฐ๋ฅ ์์ ๋์ฌ์ ธ ์๋ค. ์ดํญ์๋ ๋ฌผ๊ณ ๊ธฐ๊ฐ ํ ๋ง๋ฆฌ ์ด์ ๋ค์ด์๋ค. <๊ทธ๋ฆผ 1>์ ์ดํญ 8๊ฐ๊ฐ ๋ฐ๋ฅ ์์ ๋์ฌ์๋ ์ํ์ด๋ฉฐ, ์นธ์ ์ ํ ๊ฐ์ ๊ทธ ์ดํญ์ ๋ค์ด์๋ ๋ฌผ๊ณ ๊ธฐ์ ์์ด๋ค. ํธ์์ ์ดํญ์ ์ ์ฌ๊ฐํ์ผ๋ก ํํํ๋ค.
์ดํญ์ ํ ๋ฒ ์ ๋ฆฌํ๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ด ์ด๋ฃจ์ด์ ธ ์๋ค.
๋จผ์ , ๋ฌผ๊ณ ๊ธฐ์ ์๊ฐ ๊ฐ์ฅ ์ ์ ์ดํญ์ ๋ฌผ๊ณ ๊ธฐ๋ฅผ ํ ๋ง๋ฆฌ ๋ฃ๋๋ค. ๋ง์ฝ, ๊ทธ๋ฌํ ์ดํญ์ด ์ฌ๋ฌ๊ฐ๋ผ๋ฉด ๋ฌผ๊ณ ๊ธฐ์ ์๊ฐ ์ต์์ธ ์ดํญ ๋ชจ๋์ ํ ๋ง๋ฆฌ์ฉ ๋ฃ๋๋ค. ์์ ์์์ ๊ฒฝ์ฐ ๋ฌผ๊ณ ๊ธฐ์ ์๊ฐ ๊ฐ์ฅ ์ ์ ์ดํญ์๋ ๋ฌผ๊ณ ๊ธฐ๊ฐ 2๋ง๋ฆฌ ์๊ณ , ๊ทธ๋ฌํ ์ดํญ์ 2๊ฐ๊ฐ ์๋ค. ๋ฐ๋ผ์, 2๊ฐ์ ์ดํญ์ ๋ฌผ๊ณ ๊ธฐ๋ฅผ ํ ๋ง๋ฆฌ์ฉ ๋ฃ์ด <๊ทธ๋ฆผ 2>์ ๊ฐ์์ง๋ค.
์ด์ ์ดํญ์ ์๋๋ค. ๋จผ์ , ๊ฐ์ฅ ์ผ์ชฝ์ ์๋ ์ดํญ์ ๊ทธ ์ดํญ์ ์ค๋ฅธ์ชฝ์ ์๋ ์ดํญ์ ์์ ์ฌ๋ ค ๋์ <๊ทธ๋ฆผ 3>์ด ๋๋ค.
์ด์ , 2๊ฐ ์ด์ ์์ฌ์๋ ์ดํญ์ ๋ชจ๋ ๊ณต์ค ๋ถ์์ํจ ๋ค์, ์ ์ฒด๋ฅผ ์๊ณ๋ฐฉํฅ์ผ๋ก 90๋ ํ์ ์ํจ๋ค. ์ดํ ๊ณต์ค ๋ถ์์ํจ ์ดํญ์ ๋ฐ๋ฅ์ ์๋ ์ดํญ์ ์์ ์ฌ๋ ค๋๋๋ค. ๋ฐ๋ฅ์ ๊ฐ์ฅ ์ผ์ชฝ์ ์๋ ์ดํญ ์์ ๊ณต์ค ๋ถ์์ํจ ์ดํญ ์ค ๊ฐ์ฅ ์ผ์ชฝ์ ์๋ ์ดํญ์ด ์์ด์ผ ํ๋ค. ์ด ์์ ์ ๊ณต์ค ๋ถ์์ํจ ์ดํญ ์ค ๊ฐ์ฅ ์ค๋ฅธ์ชฝ์ ์๋ ์ดํญ์ ์๋์ ๋ฐ๋ฅ์ ์๋ ์ดํญ์ด ์์๋๊น์ง ๋ฐ๋ณตํ๋ค.
๋จผ์ , <๊ทธ๋ฆผ 4>์ ๊ฐ์ด ์ดํญ์ด ๋์ธ ์ํ๊ฐ ๋ณํ๊ณ , ํ ๋ฒ ๋ ๋ณํด์ <๊ทธ๋ฆผ 5>๊ฐ ๋๋ค.
<๊ทธ๋ฆผ 5>์์ ํ ๋ฒ ๋ ์ดํญ์ ๊ณต์ค ๋ถ์์ํค๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค. ๊ทธ ์ด์ ๋ <๊ทธ๋ฆผ 6>๊ณผ ๊ฐ์ด ๊ณต์ค ๋ถ์์ํจ ์ดํญ ์ค ๊ฐ์ฅ ์ค๋ฅธ์ชฝ์ ์๋ ์ดํญ์ ์๋์ ๋ฐ๋ฅ์ ์๋ ์ดํญ์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.
๊ณต์ค ๋ถ์ ์์ ์ด ๋ชจ๋ ๋๋๋ฉด, ์ดํญ์ ์๋ ๋ฌผ๊ณ ๊ธฐ์ ์๋ฅผ ์กฐ์ ํ๋ค.
๋ชจ๋ ์ธ์ ํ ๋ ์ดํญ์ ๋ํด์, ๋ฌผ๊ณ ๊ธฐ ์์ ์ฐจ์ด๋ฅผ ๊ตฌํ๋ค. ์ด ์ฐจ์ด๋ฅผ 5๋ก ๋๋ ๋ชซ์ d๋ผ๊ณ ํ์. d๊ฐ 0๋ณด๋ค ํฌ๋ฉด, ๋ ์ดํญ ์ค ๋ฌผ๊ณ ๊ธฐ์ ์๊ฐ ๋ง์ ๊ณณ์ ์๋ ๋ฌผ๊ณ ๊ธฐ d ๋ง๋ฆฌ๋ฅผ ์ ์ ๊ณณ์ ์๋ ๊ณณ์ผ๋ก ๋ณด๋ธ๋ค. ์ด ๊ณผ์ ์ ๋ชจ๋ ์ธ์ ํ ์นธ์ ๋ํด์ ๋์์ ๋ฐ์ํ๋ค. ์ด ๊ณผ์ ์ด ์๋ฃ๋๋ฉด <๊ทธ๋ฆผ 7>์ด ๋๋ค.
์ด์ ๋ค์ ์ดํญ์ ๋ฐ๋ฅ์ ์ผ๋ ฌ๋ก ๋์์ผ ํ๋ค. ๊ฐ์ฅ ์ผ์ชฝ์ ์๋ ์ดํญ๋ถํฐ, ๊ทธ๋ฆฌ๊ณ ์๋์ ์๋ ์ดํญ๋ถํฐ ๊ฐ์ฅ ์์ ์๋ ์ดํญ๊น์ง ์์๋๋ก ๋ฐ๋ฅ์ ๋์์ผ ํ๋ค. <๊ทธ๋ฆผ 8>์ด ๋ฐ๋ฅ์ ๋ค์ ์ผ๋ ฌ๋ก ๋์ ์ํ์ด๋ค.
๋ค์ ๊ณต์ค ๋ถ์ ์์ ์ ํด์ผ ํ๋ค. ์ด๋ฒ์๋ ๊ฐ์ด๋ฐ๋ฅผ ์ค์ฌ์ผ๋ก ์ผ์ชฝ N/2๊ฐ๋ฅผ ๊ณต์ค ๋ถ์์์ผ ์ ์ฒด๋ฅผ ์๊ณ ๋ฐฉํฅ์ผ๋ก 180๋ ํ์ ์ํจ ๋ค์, ์ค๋ฅธ์ชฝ N/2๊ฐ์ ์์ ๋์์ผ ํ๋ค. ์ด ์์ ์ ๋ ๋ฒ ๋ฐ๋ณตํด์ผํ๋ค. ๋ ๋ฒ ๋ฐ๋ณตํ๋ฉด ๋ฐ๋ฅ์ ์๋ ์ดํญ์ ์๋ N/4๊ฐ๊ฐ ๋๋ค. <๊ทธ๋ฆผ 9>๋ ์ด ์์ ์ 1๋ฒ ํ์ ๋, <๊ทธ๋ฆผ 10>์ ๋ค์ ํ ๋ฒ ๋ ํ์ ๋์ด๋ค.
์ฌ๊ธฐ์ ๋ค์ ์์์ ํ ๋ฌผ๊ณ ๊ธฐ ์กฐ์ ์์ ์ ์ํํ๊ณ , ๋ฐ๋ฅ์ ์ผ๋ ฌ๋ก ๋๋ ์์ ์ ์ํํ๋ค. <๊ทธ๋ฆผ 10>์์ ์กฐ์ ์์ ์ ๋ง์น ๊ฒฐ๊ณผ๋ <๊ทธ๋ฆผ 11>์ด ๋๊ณ , ์ฌ๊ธฐ์ ๋ค์ ๋ฐ๋ฅ์ ์ผ๋ ฌ๋ก ๋๋ ์์ ์ ์ํํ๋ฉด <๊ทธ๋ฆผ 12>๊ฐ ๋๋ค.
์ดํญ์ ์ N, ๊ฐ ์ดํญ์ ๋ค์ด์๋ ๋ฌผ๊ณ ๊ธฐ์ ์๊ฐ ์ฃผ์ด์ง๋ค. ๋ฌผ๊ณ ๊ธฐ๊ฐ ๊ฐ์ฅ ๋ง์ด ๋ค์ด์๋ ์ดํญ๊ณผ ๊ฐ์ฅ ์ ๊ฒ ๋ค์ด์๋ ์ดํญ์ ๋ฌผ๊ณ ๊ธฐ ์ ์ฐจ์ด๊ฐ K ์ดํ๊ฐ ๋๋ ค๋ฉด ์ดํญ์ ๋ช ๋ฒ ์ ๋ฆฌํด์ผํ๋์ง ๊ตฌํด๋ณด์.
๐์ ๋ ฅ
์ฒซ์งธ ์ค์ N, K๊ฐ ์ฃผ์ด์ง๋ค. ๋์งธ์๋ ์ดํญ์ ๋ค์ด์๋ ๋ฌผ๊ณ ๊ธฐ์ ์๊ฐ ๊ฐ์ฅ ์ผ์ชฝ์ ์๋ ์ดํญ๋ถํฐ ์์๋๋ก ์ฃผ์ด์ง๋ค.
๐์ถ๋ ฅ
๋ฌผ๊ณ ๊ธฐ๊ฐ ๊ฐ์ฅ ๋ง์ด ๋ค์ด์๋ ์ดํญ๊ณผ ๊ฐ์ฅ ์ ๊ฒ ๋ค์ด์๋ ์ดํญ์ ๋ฌผ๊ณ ๊ธฐ ์ ์ฐจ์ด๊ฐ K ์ดํ๊ฐ ๋๋ ค๋ฉด ์ดํญ์ ๋ช ๋ฒ ์ ๋ฆฌํด์ผํ๋์ง ์ถ๋ ฅํ๋ค.
๐ ๋ฌธ์ ํ์ด
์ฌ์ค ๋ฌธ์ ์ ์๊ตฌ ์ฌํญ๋๋ก ๊ตฌํ์ ํ๋ฉด ๋๋ ๋ฌธ์ ์๋ค.
๊ทธ๋ฐ๋ฐ ์ด ๋ฌธ์ ๊ฐ ํ๋ 5๊น์ง ์ฌ๋ผ๊ฐ ์ด์ ๋ ์ถ์ธกํ๊ฑด๋ฐ ๋จ์ํ n*m ํํ์ 2์ฐจ์ ๋ฐฐ์ด์ด ์๋๋ผ <๊ทธ๋ฆผ 3> ๊ณผ ๊ฐ์ ํํ์ ๋ฐฐ์ด์ ๊ตฌํํด์ผ ํ๊ธฐ์ ์ฌ๋ฌ ๊ฐ์ง ์ ๊ฒฝ์จ์ผํ ์ ๋ค์ด ์์๋ค.
๊ฐ๊ฐ์ ์๊ตฌ ์ฌํญ์ ํจ์๋ก ๋ฝ๊ณ $max(๋ฌผ๊ณ ๊ธฐ์) - min(๋ฌผ๊ณ ๊ธฐ์) <= k$ ์ผ๋๊น์ง ๋ฐ๋ณตํ์๋ค.
์๋์ ํจ์๋ ๊ฐ์ฅ ์์ ๋ฌผ๊ณ ๊ธฐ์ 1์ ๋ํ๋ ํจ์์ด๋ค. (๋์ด์์ ์์ธํ ์ค๋ช ์ ์๋ตํ๋ค.)
1 2 3 4 5 6 | def plus(nums: list[int]) -> list[int]: min_fish = min(nums) for i in range(n): if nums[i] == min_fish: nums[i] += 1 return nums | cs |
์๋์ ํจ์๋ ๊ณต์ค๋ถ์ ํจ์์ด๋ค.
์ด๋๋ถํฐ ๋ฆฌ์คํธ๋ n*m ํํ๊ฐ ์๋๋ค.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | def stack(lis): # ๊ฐ์ฅ ์ผ์ชฝ์ ์๋ ๋ธ๋ญ์ ํ์นธ ์๋ก ์ฌ๋ฆผ res = [[lis[0]],lis[1:]] while True: # ๊ณต์ค๋ถ์ ํ ๋ ๋ฐ๋ฐ๋ฅ์ด ์์๋๊น์ง if len(res) > len(res[-1]) - len(res[0]):break idx = len(res[0]) tmp = [] for i in range(len(res)): tmp.append(res[i][:idx]) turned = turn(tmp) # turn ํจ์๋ 90๋ ํ์ ํจ์์ด๋ค. res = turned[::] + [res[-1][idx:]] return res | cs |
์๋์ ํจ์๋ ๋ฌผ๊ณ ๊ธฐ์ ์กฐ์ ํจ์์ด๋ค.
์์๊ณผ ์์๋๋ฅผ ๋น๊ตํด์ ์ฐจ์ด๋ฅผ 5๋ก ๋๋ ๋ชซ์ด 1์ด์์ด๋ผ๋ฉด ๋ง์ ๊ณณ์์ ์์ ๊ณณ์ผ๋ก ๋ชซ๋งํผ ์ด๋์ํจ๋ค.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | def condi(lis): n = len(lis) # ๋ณํ๋์ ์ ์ฅ res = [[0]*len(lis[i]) for i in range(n)] for i in range(len(res)): for j in range(len(res[i])): if j != 0 and abs(lis[i][j] - lis[i][j-1])//5 > 0: # ์์ ๋น๊ต if lis[i][j] < lis[i][j-1]: res[i][j] += abs(lis[i][j] - lis[i][j-1])//5 res[i][j-1] -= abs(lis[i][j] - lis[i][j-1])//5 else: res[i][j] -= abs(lis[i][j] - lis[i][j-1])//5 res[i][j-1] += abs(lis[i][j] - lis[i][j-1])//5 if i != 0 and len(lis[i-1]) > j and abs(lis[i][j] - lis[i-1][j])//5 > 0: # ์์๋ if lis[i][j] < lis[i-1][j]: res[i][j] += abs(lis[i][j] - lis[i-1][j])//5 res[i-1][j] -= abs(lis[i][j] - lis[i-1][j])//5 else: res[i][j] -= abs(lis[i][j] - lis[i-1][j])//5 res[i-1][j] += abs(lis[i][j] - lis[i-1][j])//5 for i in range(len(res)): for j in range(len(res[i])): res[i][j] += lis[i][j] # ๋ณํ๋์ ๋ฐ์ return res | cs |
์๋์ ํจ์๋ 2์ฐจ์ ๋ฐฐ์ด์ 1์ฐจ์ ๋ฐฐ์ด๋ก ๋ณ๊ฒฝ์์ผ์ฃผ๋ ํจ์์ด๋ค.
1 2 3 4 5 6 7 8 9 | def rematch(lis): res = [] n,m = len(lis), len(lis[-1]) for j in range(m): for i in range(n - 1, -1, -1): if len(lis[i]) > j: res.append(lis[i][j]) return res | cs |
์๋์ ํจ์๋ 2๋ฐฐ๋ก ๋๋๊ณ ๊ณต์ค๋ถ์ ์ํค๋ ํจ์์ด๋ค.
1 2 3 4 | def levitate(lis): n = len(lis) tmp = [lis[:n//2][::-1], lis[n//2:]] return [tmp[-1][:n//4][::-1], tmp[0][:n//4][::-1], tmp[0][n//4:], tmp[-1][n//4:]] | cs |
๐ญ ์ํ์ฐฉ์ค
์์ ๋ง ๋ค ๋ง๊ฒ ๊ตฌํํ๋ฉด ํ๋ฆด ์ผ์ ์์ ๊ฒ ๊ฐ๋ค.
ํ์ด์ฌ ์ ์ ์ค์ 2๋ฑ์ ํ๋ค ^!^
๐ ๋ฌธ์ ๋งํฌ ์ดํญ ์ ๋ฆฌ
'Problem Solving > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 18171: ABB (0) | 2023.05.15 |
---|---|
[๋ฐฑ์ค] ๋ฐฑ์ค ๋๋ค ๋ํ์ค (0) | 2023.05.09 |
[๋ฐฑ์ค] 16724๋ฒ ํผ๋ฆฌ ๋ถ๋ ์ฌ๋์ด (1) | 2023.03.10 |
[๋ฐฑ์ค] 1766๋ฒ: ๋ฌธ์ ์ง (0) | 2023.01.13 |
[๋ฐฑ์ค] 1719๋ฒ: ํ๋ฐฐ - ํ์ด์ฌ (0) | 2022.12.21 |