처음에는 stack으로 분류가 되어있어서 stack 문제인 줄 알았지만, 시간 복잡도 때문에 linked list를 사용해야 함을 알았다. 이 문제가 어이가 없었던 부분은 다름이 아니라, list 의 erase 함수에서
이 문제는 dp를 이용하는 문제였다. 노트에 끄적이면서 계산해보면 대충 피보나치 수열의 규칙이 숨겨져있는 문제임을 알 수 있는데, 현재 내 코드의 문제를 리뷰해보자면,
이 문제는 다름이 아니라, 문제를 이해하는 게 더 어려웠다. 일단 설명이 부족한 것 같아 문제는 좀 별로라고 생각되긴 한다.
이 문제는 완전탐색이였다. dfs도 필요했다. 완전 탐색도 생각보다 오래걸릴 수 있다는 것을 보여준 문제였다.
C++로 알고리즘 문제를 풀 때 실행 속도를 향상시켜주는 것들에 대해서 정리해본다.
stack을 사용하는 기본적인 문제이다. stack을 연습해볼 때 풀어보기 좋은 문제다.
음, 일단 최근에 푼 것 중에 시간이 가장 오래걸렸던 것 같다. 다른 분들의 풀이를 보니, 조금 돌아서 푼듯하다. 방법적인 측면이니 무시를 하더라도, 코드를 최대한 깔끔하게 짜려하지 않으면 예상치 못한 에러들이 많이 생겨나는 것을 발견하였다.
일단, 문제를 풀 때 꼭 scanf 와 printf를 써야함을 다시금 깨닫게 만들어준 문제다. 귀찮더라도 적어도 알고리즘 문제를 풀 때는 scanf & printf를 사용해야겠다. 문제 자체의 원리는 간단했다. 스택을 사용하면 간단하게 해결되는 문제였다.
이 문제는 스택을 이해하기 위한 문제이다. 직접 써보면서 문제의 원리를 파악하고 코드로 옮기면 되는 문제이다. 다만 스스로 피드백을 하자면 원리를 찾는 것을 계속 훈련해서 좀 더 복잡한 문제도 빠르게 해답을 캐치해내는 연습을 해야겠다는 것이다.
피보나치 문제를 조금 변형한 dp 문제다. 간단하게 손 풀기로 문제를 하나 풀어보았다.
dp 분류에 속하지만, dp고 뭐고 단순한 문제다. 고민한 포인트는 생각지도 못한 bool 배열을 초기화하는 문제였다. 계속 전체가 false 로 초기화되어 그냥 for문으로 초기화를 진행했다.
솔직히, dp보다도 구현하는 게 빡셌던 문제같다. 풀면서 부족함을 느꼈다. string + string = string 의 더하기를 직접 구현해야했는데, 중구난방 코드가 됐다. 아래에 참고할만한 좋은 블로그의 링크를 첨부한다. string 더하기 코드를 단 몇 줄만에 짜는 걸 보고 현타가 왔다. 다음에 다시 풀어봐야겠다.
큰 사각형과 작은 사각형을 뺀다는 개념으로 문제를 접근해야 한다.
DP 문제였는데, 풀면서 느끼지만 항상 반례를 잘 만드는게 중요한 것 같고 돌리기 전에 한 번 내가 만든 반례가 잘 돌아가는지 확인하고 돌리자.
DP문제로, 결국에는 피보나치 수열을 계산하는 문제이다. 간단한 문제지만, 코드를 깔끔하게 짜는 법을 익혔다.
간단한 dp 문제였다. 15%에서 자꾸 틀려서 뭐가 문제인가 좀 고민했는데,
간단하게 DP를 통하여 구현할 수 있는 문제였다.