우주에서 글을 적어본다
99클럽 코테 스터디 8일차 TIL + 스택과 수학 머리 본문
[오늘의 학습 키워드 및 문제]
- 프로그래머스의 "기능개발" 문제를 풀었다.
- 주제는 스택/큐였지만 먼저 퍼뜩 떠오른 구현이었다.
- 그래서 구현으로 먼저 풀고 스택/큐를 활용해서도 풀어봤다.
[나의 코드]
import math
def solution(progresses, speeds):
answer = []
days = []
for i in range(len(progresses)):
left_days = math.ceil((100 - progresses[i]) / speeds[i])
days.append(left_days)
# math 라이브러리 안 쓰고 푼 거
"""
for i in range(len(progresses)):
if (100 - progresses[i]) % speeds[i] != 0:
left_days = (100 - progresses[i]) // speeds[i] + 1
else:
left_days = (100 - progresses[i]) // speeds[i]
days.append(left_days)
"""
deploy_day = days[0]
count = 0
for day in days:
if day <= deploy_day:
count += 1
else:
answer.append(count)
deploy_day = day
count = 1
answer.append(count)
return answer
구현으로 푼 코드이다.
일단 기본적인 생각 과정은 이렇다. 노트에다 아래와 같이 적어 놓고 코드를 적기 시작했다.
① 남은 일수 계산한다.
② 앞날이 뒷날보다 크면 count + 1을 해준다.
③ 아니라면 answer에 count를 넣어주고 count 변수를 초기화한다.
다만 아래 스택/큐로 푼 문제와 비교해 단점을 꼽자면 math 라이브러리를 불러와야 하는 귀찮음이 있었다.
참고로 웬만하면 라이브러리 안 쓰는 걸 좋아하는 편이다. 근데 안 쓰면 코드 길어지는 것도 싫다.
def solution(progresses, speeds):
answer = []
count = 0
time = 0
while len(progresses):
if progresses[0] + time * speeds[0] >= 100:
progresses.pop(0)
speeds.pop(0)
count += 1
else:
if count > 0:
answer.append(count)
count = 0
time += 1
answer.append(count)
return answer
다음은 스택/큐 풀이이다. 구체적으로 말하면 큐를 이용한 거다.
입력이 적기 때문에 큐를 위한 deque 라이브러리를 쓰지 않고, 그냥 배열을 써도 상관없었다.
아마 이 코드에서 가장 중요한 부분이 progresses[0] + time * speeds[0] >= 100 일거라 생각한다.
나는 수학 머리가 없어서 이 부분은 다른 분들 걸 참고했다.
위의 코드는 100에서 다 된 거를 뺐는데 이거는 안 된 거를 더해서 100을 만들어 버리는 코드였다.
즉, 현재 시점(time)에서 각 작업이 완료되었는지를 확인하는 조건을 구한 거다.
이 코드와 같이 짤 수 있도록 노력해야겠다.
다들 이런 풀이를 어떻게 생각해 내신 건지 모르겠다.
그런 기념으로 저 둘의 속도 차이를 구경하고 가겠다. (어차피 아무도 깊이 들여다볼 게 아니..)
뭐... 비슷한 것 같다.
[오늘의 회고]
- 날짜만 잘 구할 수 있다면 나머지는 어렵지 않은 문제였다. 수학 머리 좀 기르자. 근데 쉽지 않다.
- 나 주제에 나머지를 못짜면... 눈물이 앞을... 끝!
'항해99 TIL' 카테고리의 다른 글
99클럽 코테 스터디 10일차 TIL + 힙(Heap) (0) | 2024.07.31 |
---|---|
99클럽 코테 스터디 9일차 TIL + 힙(Heap) (0) | 2024.07.30 |
99클럽 코테 스터디 7일차 TIL + 하노이의 탑(재귀) (0) | 2024.07.28 |
99클럽 코테 스터디 6일차 TIL + 경우의 수 (0) | 2024.07.27 |
99클럽 코테 스터디 5일차 TIL + 해시(Hash) + in 연산자 (0) | 2024.07.26 |