https://programmers.co.kr/learn/courses/30/lessons/86048
python
def solution(enter, leave):
room = []
counter_number = [0]*len(enter)
enter.reverse()
def count_add(room,counter_number) :
for j in room :
counter_number[j-1] += 1
counter_number[room[-1]-1] += len(room)-2
def enter_room(room,enter) :
room.append(enter.pop())
count_add(room,counter_number)
for i in leave :
if i in room : room.remove(i)
elif not (i in room) :
while not i in room : enter_room(room,enter)
room.remove(i)
return counter_number
.. 는 논리로 문제를 풀었다.
-> 구세영 , 정영준 , 김동욱 , Park-Giryun , Wonyoungpark 외 8 명님
→ 여기서는 나가는 사람을 더하는 과정이 좀더 깔끔해 보인다. 또 이런 방식으로 하면 set자료형을 사용할 수 도 있을 것처럼 보인다.
며칠 전부터 함수마다 책임을 나누는 형태로 코드 짜는걸 연습해 봤는데,
오늘 역시 enter_room 까지 만들어놓고 한번 돌려서 성능 체크하고
count_add까지 만들어서 성능 체크를 해보니 오류가 발생했다.
그런데 enter_room 함수까지는 내가 원했던 그대로 작동했기 때문에
count_add만 변경하면 된다는 점을 깨달았고, index 부분에 1을 빼주지 않아 문제가 발생했다는 점을
비교적 빠르게 확인할 수 있었다.
또 기존에 문제풀이를 할 때는, 어디부터 어디까지 작성하고 테스트를 돌려야할 지 몰라
거의 전체 코드를 완성하고 나서야 문제에 대해 하나하나 코드를 다시 뜯어보는 등의 작업을 했는데,
오늘은 문제발견 → 피드백 → 해결의 싸이클 정말 빨랐다. 물론 비교적 간단한 문제라서 그렇겠지만...
앞으로도 열심히 써먹어야겠다.