์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 | 27 | 28 |
- ๋น ๋ฐ์ดํฐ
- dataframe
- datascience
- LDA
- Python
- ๋ฐ์ดํฐ๋ถ๊ท ํ
- ๋์ํ๋ณธ
- ADsP
- ๋ ๋ฆฝํ๋ณธ
- ์ค๋ฒ์ํ๋ง
- ์ฃผ์ฑ๋ถ๋ถ์
- opencv
- t-test
- ํ ์คํธ๋ถ์
- ๋น ๋ฐ์ดํฐ๋ถ์๊ธฐ์ฌ
- ์ธ๋์ํ๋ง
- pandas
- DBSCAN
- ๋ฐ์ดํฐ๋ถ์์ ๋ฌธ๊ฐ
- PCA
- Lambda
- ์๋ํด๋ผ์ฐ๋
- iloc
- numpy
- ํฌ๋กค๋ง
- ํ์ด์ฌ
- ๋ฐ์ดํฐ๋ถ์์ค์ ๋ฌธ๊ฐ
- ADP
- ๊ตฐ์งํ
- ๋ฐ์ดํฐ๋ถ์
Data Science LAB
[Python] ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ ์คํธ ์ฐ์ต level2 (๋กค์ผ์ดํฌ ์๋ฅด๊ธฐ) ๋ณธ๋ฌธ
[Python] ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ ์คํธ ์ฐ์ต level2 (๋กค์ผ์ดํฌ ์๋ฅด๊ธฐ)
ใ ใ ใ ใ 2022. 12. 15. 05:531. ๋ฌธ์ ์ค๋ช
์ฒ ์๋ ๋กค์ผ์ดํฌ๋ฅผ ๋ ์กฐ๊ฐ์ผ๋ก ์๋ผ์ ๋์๊ณผ ํ ์กฐ๊ฐ์ฉ ๋๋ ๋จน์ผ๋ ค๊ณ ํฉ๋๋ค. ์ด ๋กค์ผ์ดํฌ์๋ ์ฌ๋ฌ๊ฐ์ง ํ ํ๋ค์ด ์ผ๋ ฌ๋ก ์ฌ๋ ค์ ธ ์์ต๋๋ค. ์ฒ ์์ ๋์์ ๋กค์ผ์ดํฌ๋ฅผ ๊ณตํํ๊ฒ ๋๋ ๋จน์ผ๋ ค ํ๋๋ฐ, ๊ทธ๋ค์ ๋กค์ผ์ดํฌ์ ํฌ๊ธฐ๋ณด๋ค ๋กค์ผ์ดํฌ ์์ ์ฌ๋ ค์ง ํ ํ๋ค์ ์ข ๋ฅ์ ๋ ๊ด์ฌ์ด ๋ง์ต๋๋ค. ๊ทธ๋์ ์๋ฆฐ ์กฐ๊ฐ๋ค์ ํฌ๊ธฐ์ ์ฌ๋ ค์ง ํ ํ์ ๊ฐ์์ ์๊ด์์ด ๊ฐ ์กฐ๊ฐ์ ๋์ผํ ๊ฐ์ง์์ ํ ํ์ด ์ฌ๋ผ๊ฐ๋ฉด ๊ณตํํ๊ฒ ๋กค์ผ์ดํฌ๊ฐ ๋๋์ด์ง ๊ฒ์ผ๋ก ์๊ฐํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ๋กค์ผ์ดํฌ์ 4๊ฐ์ง ์ข ๋ฅ์ ํ ํ์ด ์ฌ๋ ค์ ธ ์๋ค๊ณ ํฉ์๋ค. ํ ํ๋ค์ 1, 2, 3, 4์ ๊ฐ์ด ๋ฒํธ๋ก ํ์ํ์ ๋, ์ผ์ดํฌ ์์ ํ ํ๋ค์ด [1, 2, 1, 3, 1, 4, 1, 2] ์์๋ก ์ฌ๋ ค์ ธ ์์ต๋๋ค. ๋ง์ฝ ์ธ ๋ฒ์งธ ํ ํ(1)๊ณผ ๋ค ๋ฒ์งธ ํ ํ(3) ์ฌ์ด๋ฅผ ์๋ฅด๋ฉด ๋กค์ผ์ดํฌ์ ํ ํ์ [1, 2, 1], [3, 1, 4, 1, 2]๋ก ๋๋๊ฒ ๋ฉ๋๋ค. ์ฒ ์๊ฐ [1, 2, 1]์ด ๋์ธ ์กฐ๊ฐ์, ๋์์ด [3, 1, 4, 1, 2]๊ฐ ๋์ธ ์กฐ๊ฐ์ ๋จน๊ฒ ๋๋ฉด ์ฒ ์๋ ๋ ๊ฐ์ง ํ ํ(1, 2)์ ๋ง๋ณผ ์ ์์ง๋ง, ๋์์ ๋ค ๊ฐ์ง ํ ํ(1, 2, 3, 4)์ ๋ง๋ณผ ์ ์์ผ๋ฏ๋ก, ์ด๋ ๊ณตํํ๊ฒ ๋๋์ด์ง ๊ฒ์ด ์๋๋๋ค. ๋ง์ฝ ๋กค์ผ์ดํฌ์ ๋ค ๋ฒ์งธ ํ ํ(3)๊ณผ ๋ค์ฏ ๋ฒ์งธ ํ ํ(1) ์ฌ์ด๋ฅผ ์๋ฅด๋ฉด [1, 2, 1, 3], [1, 4, 1, 2]๋ก ๋๋๊ฒ ๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ ์ฒ ์๋ ์ธ ๊ฐ์ง ํ ํ(1, 2, 3)์, ๋์๋ ์ธ ๊ฐ์ง ํ ํ(1, 2, 4)์ ๋ง๋ณผ ์ ์์ผ๋ฏ๋ก, ์ด๋ ๊ณตํํ๊ฒ ๋๋์ด์ง ๊ฒ์ ๋๋ค. ๊ณตํํ๊ฒ ๋กค์ผ์ดํฌ๋ฅผ ์๋ฅด๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ๊ฐ์ง ์ผ ์ ์์ต๋๋ค. ์์ ๋กค์ผ์ดํฌ๋ฅผ [1, 2, 1, 3, 1], [4, 1, 2]์ผ๋ก ์๋ผ๋ ๊ณตํํ๊ฒ ๋๋ฉ๋๋ค. ์ด๋ค ๊ฒฝ์ฐ์๋ ๋กค์ผ์ดํฌ๋ฅผ ๊ณตํํ๊ฒ ๋๋์ง ๋ชปํ ์๋ ์์ต๋๋ค.
๋กค์ผ์ดํฌ์ ์ฌ๋ ค์ง ํ ํ๋ค์ ๋ฒํธ๋ฅผ ์ ์ฅํ ์ ์ ๋ฐฐ์ด topping์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋กค์ผ์ดํฌ๋ฅผ ๊ณตํํ๊ฒ ์๋ฅด๋ ๋ฐฉ๋ฒ์ ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
2. ์ ํ ์ฌํญ
- 1 ≤ topping์ ๊ธธ์ด ≤ 1,000,000
- 1 ≤ topping์ ์์ ≤ 10,000
3. ๋ด ํ์ด
from collections import Counter
def solution(topping):
answer = 0
s = set()
count = Counter(topping)
for i in topping:
s.add(i)
count[i] -= 1
if count[i] == 0:
count.pop(i)
if len(s) == len(count):
answer += 1
return answer
1. ์ฒ ์๊ฐ ๋ง ๋ณผ ์ ์๋ ํ ํ์ ์ข ๋ฅ๋ฅผ ์นด์ดํธํ๊ธฐ ์ํ set() ์์ฑ (์งํฉ์ผ๋ก ์์ฑ ์ ์ค๋ณต๋ ์์๊ฐ ๋ค์ด๊ฐ ์ ์์)
2. Counter()ํจ์๋ฅผ ์ฌ์ฉํด ์ด topping์ ์ข ๋ฅ์ ๊ฐ ๊ฐ์๋ฅผ ๊ตฌํจ
3. for ๋ฌธ์ ์ฌ์ฉํด ๋ฐ๋ณตํ๋ฉฐ topping์ ์์๋ฅผ ํ๋์ฉ s์ ์ถ๊ฐ, ์นด์ดํธ ๋ ๋์ ๋๋ฆฌ์์๋ 1์ฉ ๋นผ์ค
4. ๋์ ๋๋ฆฌ(count)์ value๊ฐ์ด 0์ด ๋๋ฉด key๊ฐ ์ ๊ฑฐ
5. ์งํฉ(s)์ ์์์ ๊ฐ์์ ๋์ ๋๋ฆฌ(count)์ key์ ๊ฐ์๊ฐ ๊ฐ์ผ๋ฉด answer +1
4. ๋ค๋ฅธ ์ฌ๋์ ํ์ด
def solution(topping):
from collections import Counter, defaultdict
answer = -1
list1 = Counter(topping)
list2 = defaultdict(int)
cnt = 0
for t in topping:
list2[t] += 1
list1[t] -= 1
if list1[t] == 0:
del list1[t]
if len(list1) == len(list2):
cnt += 1
answer = cnt
return answer