양방향 그래프는 map 자료 구조로 구현하였다. 하나의 vertex 를 key 로 해서, 해당 vertex 와 연결된 vertex 들을 리스트 형태로 value 에 넣어주었다.
키워드를 추출해내는 작업은 여전히 유효하게 활용되었다. 이 문제의 키워드는 거점, 도로, 경로, 오류, 수정 이었다. 이런 키워드를 바탕으로 작업을 도로로 연결된 인접 거점을 저장하는 작업 과 경로상에 오류지점을 찾는 작업 으로 효율적으로 분해할 수 있었다.
경로의 수정이 문제의 요구사항이자 핵심이었다. 오류가 연속되어서 나타나는 경우를 고려해서 수정하면 문제가 해결될 것 같다.
문제의 조건중 시작거점과 끝거점이 변하지 않는다는 조건이 있었다. 그래서 올바른 경로를 모두 구하는 BFS 로 방향을 바꿨다. 올바른 경로를 모두 구한뒤에 주어진 경로와 대조해서 차이가 가장 작은 것을 골라냈다.
결론은 시간초과.
결국 힌트를 봤다. 동적 프로그래밍이라는 아이디어를 봤다. 최소한의 수정횟수를 main problem 으로 삼을 수 있다. 이때, 두번째 거점을 어느곳으로 택하느냐에 따라서 sub problem 을 정의할 수 있다. 두번째 거점의 위치는 상호배타적이므로, sub problem 은 겹치지 않게 분할된다.
서버에서 렌더링 된 페이지를 클라이언트로 보내주는 것. single page application 을 이용시, 기본적인 html 만을 받고, 자바스크립트를 이용해 화면을 렌더링하는 과정과 비교해보면 이해가 쉬움.
이점은 크게 두가지. 검색 엔진 최적화와 렌더링 속도 향상. 첫번째는, html 을 보내주기 때문에 html 내용의 검색이 가능해짐. 렌더링 최적화는 SPA 의 동작과정을 생각해야함. SPA 에서는 자바스크립트를 다운로드하고 실행하는 시간까지가 렌더링 되는 시간에 포함되어 있음. 서버로부터 html 만을 받게 되면, 이러한 시간들이 없어지기 때문에, 렌더링 속도가 빨라짐.
하지만, 페이지가 실제로 동작하기 위해서는 렌더링된 화면에 자바스크립트 기능을 연결시킬 필요가 여전히 존재함. 이때, 이것을 가능하게 하는 기술이 hydration.
설계자들이 흔히 하는 실수는 설계 상의 문제를 사용자의 문제로 대치하는 것이다. 예를 들어, 바늘이 달린 인쇄 검토기를 사용하면서 다쳤다면, 그 책임은 너무나 쉽게 사용자에게 전가되는 경우가 있다.
어떤 부적합에 대한 인식은 실제로 그 상황을 경험한 이후에야만 생겨나는 경우가 많다. 자원 절약 문제로 도로의 제한 속도를 10km/h 낮춘 경우가 있었는데, 이로 인해, 교통사고의 비율과 도로의 제한 속도 사이의 연관관계가 드러났으며, 이로 인해, 도로의 제한 속도의 부적합성이 드러났다. (이전까지는, 운전자의 부주의와 음주 운전등을 훨씬 더 크게 문제삼았다.)
마이크로프로텍트에서 하던 것과 유사하게 세팅을 했다. 지라도 사용하니 뭔가 대충할 수 없게 되었다. 이번엔 어떤식으로 프로젝트를 진행할지 매우 기대가 된다.
집중을 깨트리는 것들에 대한 대책.
무언가 크게 재미는 없지만 습관적으로 하고 싶을때(핸드폰, 웹툰 등등)
10분만 기다렸다가 하자.
10분은 생각보다 길고 강력해서, 욕구를 잠재우기에 충분한 시간이다.