๐ ํ์ด์ฌ ์ผ๋ก ํ์ด
๐ ๋ฌธ์ ๋งํฌ :
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๐ ๋ฌธ์ ์ค๋ช :
์ ์ n, left, right๊ฐ ์ฃผ์ด์ง๋๋ค. ๋ค์ ๊ณผ์ ์ ๊ฑฐ์ณ์ 1์ฐจ์ ๋ฐฐ์ด์ ๋ง๋ค๊ณ ์ ํฉ๋๋ค.
- nํ n์ด ํฌ๊ธฐ์ ๋น์ด์๋ 2์ฐจ์ ๋ฐฐ์ด์ ๋ง๋ญ๋๋ค.
- i = 1, 2, 3, ..., n์ ๋ํด์, ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํฉ๋๋ค.
- 1ํ 1์ด๋ถํฐ iํ i์ด๊น์ง์ ์์ญ ๋ด์ ๋ชจ๋ ๋น ์นธ์ ์ซ์ i๋ก ์ฑ์๋๋ค.
- 1ํ, 2ํ, ..., nํ์ ์๋ผ๋ด์ด ๋ชจ๋ ์ด์ด๋ถ์ธ ์๋ก์ด 1์ฐจ์ ๋ฐฐ์ด์ ๋ง๋ญ๋๋ค.
- ์๋ก์ด 1์ฐจ์ ๋ฐฐ์ด์ arr์ด๋ผ ํ ๋, arr[left], arr[left+1], ..., arr[right]๋ง ๋จ๊ธฐ๊ณ ๋๋จธ์ง๋ ์ง์๋๋ค.
์ ์ n, left, right๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ์ฃผ์ด์ง ๊ณผ์ ๋๋ก ๋ง๋ค์ด์ง 1์ฐจ์ ๋ฐฐ์ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
๐ ์ ํ ์ฌํญ
- 1 ≤ n ≤ 107
- 0 ≤ left ≤ right < n2
- right - left < 105
๐ ์ ์ถ๋ ฅ ์

์ถ์ธก)
nํ n์ด๋ก ์ซ์๋ฅผ ์ฑ์ธ๋ 1ํ 1์ด์ 1, 2ํ 2์ด๊น์ง 2, 3ํ 3์ด๊น์ง 3์ ์ฑ์ด ๋ค์
๊ทธ๊ฑธ ํ์ ๊ธฐ์ค์ผ๋ก ์๋ผ ํํ์ผ๋ก ๋ถ์ด๊ณ ๊ทธ ์ ์ฒด ๋ฐฐ์ด์์ left๋ถํฐ right๊น์ง์ ์ธ๋ฑ์ค์ ํด๋นํ๋ ๋ฐฐ์ด์ returnํ๋ฉด ๋๋ ๋ฌธ์
๊ทธ๋ผ ์ฌ๊ธฐ์ ์ผ๋จ nํ n์ด์ ์ฑ์์ฃผ๋ ๋ฐฉ๋ฒ
n์ด 6์ผ๋ผ๊ณ ํ๋ฉด
1, 2, 3, 4, 5, 6
2, 2, 3, 4, 5, 6
3, 3, 3, 4, 5, 6
4, 4, 4, 4, 5, 6
5, 5, 5, 5, 5, 6
6, 6, 6, 6, 6, 6
1, 2, 3, 4, 5, 6 / 2, 2, 3, 4, 5, 6 / 3, 3, 3, 4, 5, 6 / 4, 4, 4, 4, 5, 6 / 5, 5, 5, 5, 5, 6 / 6, 6, 6, 6, 6, 6
ํจํด์ ๋ณด๋ฉด 1๋ฒ ํ์ 1์ด 1๋ฒ๊น์ง, 2๋ฒ ํ์ 2๊น์ง ๋ชจ๋ 2, 3๋ฒ ํ์ 3๊น์ง 3 ์ด๋ฐ์์ ํจํด์ ๋ฐ๋ณตํ๋ค.
๊ทธ๋ผ i๋ฒ ํ์ผ ๊ฒฝ์ฐ i๊น์ง i๋ฅผ ๋ฐ๋ณต ๋๋จธ์ง๋ +1์ฉํ์ฌ ๊ทธ๋ฆฌ๊ณ n์ด ๋๋ฉด ํ ํ์ ์์ฑ ์ํค๋ ๋ฐฉ์์ผ๋ก ํ์ ๋ง๋ ๋ค.
๊ทธ๋ฆฌ๊ณ ํ์ํ ๋ถ๋ถ์ ๋ฐฐ์ด๋ง ์๋ผ return
์์ค์ฝ๋)
* 1์ฐจ) ์คํจ : 45์ ํ๋๋นผ๊ณ ๋ชจ๋ ์๊ฐ์ด๊ณผ
def solution(n, left, right):
answer = []
for i in range(0,n) :
for j in range(0,n) :
if j < i :
answer.append(i+1)
else:
answer.append(j+1)
if len(answer) > right+1 :
return answer[left:right+1]
* 2์ฐจ) ์ฑ๊ณต
def solution(n, left, right):
answer = []
for i in range(left, right+1) :
remain = (i % n) + 1
share = int(i / n) + 1
if remain > share :
answer.append(remain)
else :
answer.append(share)
return answer
๋ฆฌ๋ทฐ)
1์ฐจ)
์๊ฐ ์ด๊ณผ๋ฅผ ์ํ๊ฒ ํ๋ ค๋ฉด ์ผ๋จ ์ด๋ป๊ฒ ํด์ผํ ๊น
n์ด ์ผ๋จ 10์ 7์น๊น์ง ๊ฐ๋ฅํ๋จ ๊ฑธ ์๊ฐํ๋ฉด ๋ชจ๋ ๋ฐฐ์ด์ ์ ๋ฆฌํ๊ณ ํ๋ ๋ฐฉ์์ด ์๊ฐ ์ด๊ณผ์ ์ง๋ํ ์ํฅ์ ๋ฏธ์น ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
๋ฑ left์ right ์ฌ์ด๋ง ํ๋จํ๋ ๋ฐฉ๋ฒ์ด ์์๊น?
์ดํด ์ฝ์ง ๋ง์ด ํ๋ค ใ
์ฒ์์ 3๋ถ๋ถ์ผ๋ก ๋๋ ์ (์ฒ์์ค, ๋ฐ๋ณต์ค, ๋ง์ง๋ง์ค) for๋ฌธ์ผ๋ก ๋ฐฐ์ด์ ๋ง๋ค์ด ๊ทธ ๋ฐฐ์ด๋ค์ ๋ ๋ถ์ด๋ ๋ฐฉ์์ผ๋ก๋ ํด๋ดค๋ค.

๊ทผ๋ฐ ์ผ๋จ ์ ํ๋๋ ์๋ง๊ณ ๋ฐฉ์์ด ๋๋ฌด ์ง์ ๋ถํ๋ค๋ ๋๋์ด ๋ค์ด์ ์ต๋ํ ๋ชจ๋ ์๋ฅผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ํ๋ณํ๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ฏผํ๊ฒ ๋์๋ค.
์์ left ~ right ์ฌ์ด์ ์ธ๋ฑ์ค ๊ฐ์ ๋ฐ๊ฒ ๋๋ฉด ์ธ๋ฑ์ค ๊ฐ์ผ๋ก ํด๋น ์๋ฅผ ํ๋จํ ์ ์๊ฒ ๋ง๋ค๊ณ ๋ฐ๋ก appendํ๋ ๋ฐฉ์์ผ๋ก ์งํ! ์ฑ๊ณต!!
'Coding Test > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| Programmers] JadenCase ๋ฌธ์์ด ๋ง๋ค๊ธฐ (0) | 2023.04.12 |
|---|---|
| Programmers] ํ๋ฆฐํฐ (0) | 2023.04.11 |
| Programmers] ๊ณต์ ์ฐ์ฑ (0) | 2023.04.03 |
| Programmers] ๋ง์น ํ๊ธฐ (0) | 2023.03.28 |
| Programmers] ๊ทค ๊ณ ๋ฅด๊ธฐ (0) | 2023.03.28 |
