ICPC 예선을 하면서, 그리고 최근 몇가지 dp 문제를 이상하게 뚫어보려고 시도하면서
같은 작업만 오지게 돌리거나 바텀업이면서도 메모이제이션이 간단한 dp의 경우에는 연산 횟수가 수십억 나오는 것도 비벼볼 수 있다는 체감을 함
가끔가다 누군가 1초엔 10억도 가능하다는 글을 볼 때는 알아도 별 도움이 안될 것 같다고 느꼈는데 우연히 테이블 이상하게 짠 dp 코드가 아슬아슬하게 통과하는 걸 보고 확 와닿았음.
그래서 몇문제 정도 정해보다 나이브하게 풀어봤는데 되는게 있더라고
흥미로우면서도 죄책감도 듦 ㅋㅋ
dp 말고도 ICPC 예선 때 푼 한 문제 시간 복잡도 생각해보니까 1초 1억 대입하면 안 풀리는 거였더라;;
그때는 남은 문제에 집중해야 되니까 더 생각 않고 넘어갔는데 그거 TLE 떴으면 예선 떨어지는 거라서 소름 돋았음
십억이면 단순 while 루프만 돌려도 1초는 넘길것같은데
단순 사칙연산 수준(나누기 제외)이면 20억번 근처까지 돌더라
이런식으로 생각할거면 단순 big O notation 시간복잡도 뿐만 아니라 코드 전체가 어느정도 연산을 하는지 파악해야 돼서 오히려 비효율적임...
컴파일러 최적화 요인도 큼
진짜 dp가 그래서 아 이거 1억 넘는데 하고 안했다가 나중에 정해보니 dp인경우 있더라 ㅋㅋㅋ
아 1기가면 10억이지ㅋㅋ
SCPC문제중에 이런감각없으면 나가리되는 문제 많더라. 교훈은 일단 비빌만해보이면 구현배보는것도 나쁘지않다는거
그쪽은 cpu 응딩이 믿고 테케개수빨로 밀어붙이는 건뎁쇼..