링크
7주차
- 아직 이름도 없음;;
- 이름을 지어준다면
회의실 접촉인원 찾기
난이도
문제요약
- 입장순서, 퇴장순서가 따로 적힌 배열이 있을때 각 인원이 반드시 만나는 인원 수 반환
접근
-
- 입장배열, 퇴장배열을 따로본다.
-
- 입장 배열과 퇴장배열을 하나의 배열로 통합
- 좀더 계산이 쉬워졌다.
- 하나의 배열로 합치면 입장과 퇴장접근이 더 쉬워진다.
- 인원이 들어갈때 현재 방의 인원수가 그사람이 보는 사람이되고, 퇴장하기전까지 들어오는 사람을 +1해주면된다.
간단 알고리즘
- 배열 합치기
- save는 합친 결과 저장용
- 퇴장인원을 기준으로 반복시작
- 퇴장인원 l
- 퇴장인원이 save에 없을때
- 퇴장인원이 save에 존재
- 퇴장인원 save에 추가
>>>
다음 퇴장인원 확인 시작
- 각 인원별로 확인 알고리즘
- save를 순서대로 확인
- cur는 현장에 있는 인원수
- check
- dict자료구조, key는 인원아이디, value는 그 인원이 본 인원수
- 반복시작
- check에 없을때 = 이제 입장하려는 사람
- check에
인원아이디:cur
을 초기화해준다.
- 모든 check의 본인원수를+1해준다.
- cur+1해준다.
- check에 있다 = 이제 퇴장
- check에서 해당인원 key 삭제
- cur-1해준다.
- 결과
- check의 Key를 기준으로 정렬, value를 answer해준다.
후기
- 두개의 배열로 열심히 해보려했지만 조금 복잡해져서 머리가 잘 안돌아갔다.
- 두개의 배열로 한번에 풀수 있지만, 좀더 쉽게 접근하기위해 하나의 배열로 만든뒤 진행했다.
- 지금 알고리즘은 두개의 영역으로 있지만 하나로 합칠 수 있는 여지는 충분하다.
- 하지만 어느정도 시간을 타협하기위해서는 하나의 접근을 고집하기보다 좀더 자신이 빠르게 생각할 수 있게 변형하는것도 중요하다 생각한다.