728x90
๋ฐ์ํ
๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/17680
ํ์ด
1. deque ์ฌ์ฉ
from collections import deque
- deque๋ ์๋ฐฉํฅ์์ ๋น ๋ฅธ ์ฝ์ ๊ณผ ์ญ์ ๋ฅผ ์ง์ํ๋ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค. ์บ์์์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ณ ์ญ์ ํ ๋ ๋น ๋ฅธ ์ฒ๋ฆฌ๋ฅผ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
2. ์บ์ ํฌ๊ธฐ ์์ธ ์ฒ๋ฆฌ
if cacheSize == 0:
return len(cities) * 5
- ์บ์ ํฌ๊ธฐ๊ฐ 0์ผ ๋๋ ์บ์๊ฐ ์๋ํ์ง ์์ผ๋ฉฐ, ๋ชจ๋ ๋์์์ ๋ฌด์กฐ๊ฑด ์บ์ ๋ฏธ์ค๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ฐ๋ผ์ ๋์์ ๊ฐ์๋งํผ 5๋ฅผ ๊ณฑํด ๋ฏธ์ค ์๊ฐ์ ์ดํฉ์ ๋ฐํํฉ๋๋ค.
- ์บ์๊ฐ ์๋ค๋ ์ํฉ์ ๋ฏธ๋ฆฌ ์ฒ๋ฆฌํ์ฌ ๋๋จธ์ง ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ์ ์งํ๊ณ , ์คํ ์๊ฐ์ ์ ์ฝํฉ๋๋ค.
3. ์บ์ ๋ฐ ๋์ ์ด๋ฆ์ ๋์๋ฌธ์ ํต์ผ ์ฒ๋ฆฌ
cache = deque(maxlen=cacheSize) # ์บ์ ํฌ๊ธฐ ์ค์
- deque์ maxlen์ ์ค์ ํ์ฌ ์บ์๊ฐ ์ต๋ ํฌ๊ธฐ๋ฅผ ๋๊ธฐ๋ฉด ์๋์ผ๋ก ๊ฐ์ฅ ์ค๋๋ ํญ๋ชฉ์ ์ ๊ฑฐํ๊ฒ ๋ง๋ญ๋๋ค. ์บ์์ ํฌ๊ธฐ๋ฅผ ๋ช ์์ ์ผ๋ก ๊ด๋ฆฌํ์ง ์๊ณ deque๊ฐ ์์์ ์ฒ๋ฆฌํด์ค๋๋ค.
for city in cities:
city = city.lower()
- ๋์ ์ผ๋ฏ์ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๊ธฐ ์ํด lower() ํจ์๋ฅผ ์ฌ์ฉํด ๋ชจ๋ ๋์ ์ด๋ฆ์ ์๋ฌธ์๋ก ๋ณํํฉ๋๋ค.
4. ์บ์ ํํธ ๋ฐ ๋ฏธ์ค ์ฒ๋ฆฌ
if city in cache:
answer += 1 # ์บ์ ํํธ
cache.remove(city) # ๊ธฐ์กด ์์น์์ ์ ๊ฑฐ ํ ์ต์ ํ
else:
answer += 5 # ์บ์ ๋ฏธ์ค
- ์บ์ ํํธ ์ฒ๋ฆฌ
- ๋์๊ฐ ์บ์์ ์ด๋ฏธ ์กด์ฌํ๋ ๊ฒฝ์ฐ ์บ์ ํํธ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ์ด๋ ์คํ ์๊ฐ์ 1๋ง ์ถ๊ฐํฉ๋๋ค. ๋ํ ์บ์์ ๊ธฐ์กด ์์น์์ ํด๋น ๋์๋ฅผ ์ ๊ฑฐํ๊ณ ์ต์ ํญ๋ชฉ์ผ๋ก ๋ค์ ์ถ๊ฐํด์ผ ํ๋ฏ๋ก cache.remove(city)๋ฅผ ์คํํฉ๋๋ค.
- ์บ์ ๋ฏธ์ค ์ฒ๋ฆฌ
- ๋์๊ฐ ์บ์์ ์์ผ๋ฉด ์บ์ ๋ฏธ์ค๋ก ๊ฐ์ฃผ๋๋ฉฐ, ์คํ์๊ฐ์ 5 ์ถ๊ฐํฉ๋๋ค. ์ด๋๋ ๋์ remove ์์ด ๋ฐ๋ก ์บ์์ ๋์๋ฅผ ์ถ๊ฐํฉ๋๋ค.
4. ์บ์ ๊ด๋ฆฌ
cache.append(city)
- ๋์๊ฐ ์บ์์ ์๊ฑฐ๋, ์บ์ ํํธ๋ก ์ธํด ์ ๊ฑฐ๋ ํ ๋ค์ ์บ์์ ๋งจ ๋ค์ ์ถ๊ฐํฉ๋๋ค. ์ด๋, deque์ maxlen์ด ์ค์ ๋์ด ์๊ธฐ ๋๋ฌธ์, ์บ์๊ฐ ๊ฐ๋ ์ฐผ๋ค๋ฉด ์๋์ผ๋ก ๊ฐ์ฅ ์ค๋๋ ํญ๋ชฉ์ด ์ญ์ ๋ฉ๋๋ค.
- deque๊ฐ ์๋์ผ๋ก ํญ๋ชฉ์ ๊ด๋ฆฌํจ์ผ๋ก์จ ์บ์ ํฌ๊ธฐ ์ ํ์ ์ด๊ณผํ ๋ ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ๊ฐ๋จํ๊ฒ ํด๊ฒฐํฉ๋๋ค.
์ต์ข ์ฝ๋
from collections import deque
def solution(cacheSize, cities):
if cacheSize == 0:
return len(cities) * 5 # ์บ์ ํฌ๊ธฐ๊ฐ 0์ผ ๋๋ ๋ฌด์กฐ๊ฑด ์บ์ ๋ฏธ์ค
answer = 0
cache = deque(maxlen=cacheSize) # deque์ maxlen์ ์ค์ ํ์ฌ ์๋์ผ๋ก ๊ด๋ฆฌ
for city in cities:
city = city.lower() # ๋์๋ฌธ์ ๊ตฌ๋ถ ์์ ๊ธฐ
if city in cache:
answer += 1 # ์บ์ ํํธ
cache.remove(city) # ๊ธฐ์กด ์์น์์ ์ ๊ฑฐ ํ
else:
answer += 5 # ์บ์ ๋ฏธ์ค
cache.append(city) # ์บ์์ ๋์ ์ถ๊ฐ (์๋์ผ๋ก ์ค๋๋ ํญ๋ชฉ ์ ๊ฑฐ)
return answer
728x90
๋ฐ์ํ