nahwasa   4년 전

5c3332bc-72a8-422d-b80c-83dd9bb3feb3

이런 사이트 있는걸 더 빨리 알았어야하는데.. 이제 시작한지 일주일도 안됬지만 재밌게 즐기고있는 늅늅입니다.
원랜 일하면서 중간중간에 시간나면 딴짓했을텐데.. 요즘은 이거 문제풀고있네요. 넘나 재밌군요.

시간제한없이 짜라고 했었으면 그냥 대충 짜고 말았을텐데 ㅋㅋ
시간제한이 있으니 어떻게든 줄여보려고 하다보니 더 많이배우고, 더 많이 생각할 수 있는듯하네요.

1차시도 : String과 String에 idx를 줘서 substring 등을 사용하여 구현 -> idx 찾아가는 시간이 O(n) 걸려서 실패
2차시도 : idx 찾아가는 시간을 생각못하고, substring을 서로 붙이는 시간이 오래걸리는 것 같아서
              String대신 StringBuffer 클래스로 구현 -> idx로 위치 찾아가는 시간이 O(n)이라 또 실패
              (일단 DB쪽에서 append 많은 경우 String의 + 연산으로 막 30초 걸리던걸 StringBuffer쓰니 1초도
               안걸린 경험이있습니다. append 하실땐 StringBuffer쓰세요!)
3차시도 : LinkedList -> (아직 idx 찾아가는 시간때문이란걸 생각못했습니다.)
               역시 해당위치 찾아가는 시간이 O(n)
4차시도 : idx 위치 찾아가는 시간이라 생각이 들어서 DoublyLinkedList.. 를 쓰려고보니 자바에서 미리 만들어둔게
               없는것같아 대충 만들어서 사용 -> 성공! (찾아가는 시간이 O(1), 삭제도 1, 삽입도 1 ..)

결국엔 어떠한 문자를 찾아서 삭제하거나, 어떠한 문자 뒤에 삽입하는게 아니고
포인터를 에디터로 움직이며 진행하는 것이기에, 포인터 이동이 자유로운 DoublueLinkedList가 답이었네요.
엄청 늅늅이 스러운 과정이었지만 재밌었습니다.

nahwasa   4년 전

exponential_e님껄보니 Stack으로도 되는군요 ㄷㄷ 신기하군요..

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