kjsd007   3년 전

Go로 작성했습니다.

알고리즘을 설명.

======================================================

Plan = 입력받은 문자열에서 레이저'()'를 'a'로 바꾼 문자열

이 Plan문자열을 왼쪽부터 순회하며 문제를 풀어갑니다.

======================================================

(이 나올 경우 j에 +1

------------------------------------------

j = 지금까지 나온 쇠막대기의 수

======================================================

a가 나올 경우 k는 0부터 j의 만큼 반복하며 stick[k]에 +1을 해줍니다.

------------------------------------------

k = 지금까지 나온 쇠막대기의 수

stick[k] = k번째 막대기에 레이저가 지나간 수 (ex. 0번 막대기는 제일 아래 있는 막대기)

단 stick[k]가 -1일 때는 위 과정을 수행하지 않습니다. (-1인 막대기는 길이가 끝난 막대기)

======================================================

)이 나올 경우 tail을 찾아 stick[tail]에 +1 한 값을 result에 합하고 stick [tail]의 값을 -1로 교체

------------------------------------------

tail = 맨 위 막대기

stick[tail] = 맨 위 막대기에 레이저가 지나간 수

result = 마지막 출력할 수 (막대기의 총 갯수)

(stick[tail] = -1) = 이 막대기는 길이가 끝났다.

======================================================

예제 케이스는 통과했지만 반례를 찾지 못해서 헤매고 있습니다...

도움. 

요청... 

댓글을 작성하려면 로그인해야 합니다.