안녕하세요 ?
오늘은 스택과 관련한 알고리즘을 플어봤어요 ,
stack은 대표적인 자료구조로, LIFO의 특성을 대표하는 구조인데요
N으로 Cycle 횟수를 지정하고
stack과 +,-로 pop과 push를 시각화 할 수 있게 result 리스트도 준비했습니다.
반복문을 통해 N으로 들어온 사이클이 시작이되면 count가 증가하며 count가 N까지 돌게됩니다, 이때 stack에 append를 이용해 해당 count를 push해주고 결과인 ‘+’를 result로 append 해줍니다.
stack의 마지막숫자가 N의 숫자와 같다면 pop을 하고, 같지 않을때 까지 반복수행합니다. 이 과정에서 pop이 되는경우 resulf에는 ‘-‘이 담깁니다.
하나의 조건이 더 있는데, pop과 push 가 불가능한 상태에는 NO를 출력하고, 해당 조건들을 다 만족시킨
상태로 반복문 한 사이클이 돌 때 줄바꿈을 통해 구분한다.
—
이번에 푼 문제는 group_word_check입니다,
input 값으로 Cycle의 횟수를 받아오며 다음줄 부터는 str으로 date를 받아옵니다.
단어의 시작 단어를 이용해 그 단어의 init 즉, 같은 이름을 가진 친구에게 접근하고 그 해당 index를 group화 합니다.
조금더 쉽게 풀기 위해 find라는 함수를 사용 했으며, find는 입력받은 key 를 이용해 list의 끝자락까지 접근하여 찾지 못하는경우에 실패를 return합니다.