비가 너무 많이 와서 그런지 공부방에 가기 귀찮았지만 갔다.
이것이 코딩테스트다 문제들을 풀어보다가 dp, dfs/bfs, 최단 경로 구하는 이런 유형의 문제들이 부족한 것 같아서
프로그래머스에 유형 별로 모아져있는 문제들을 풀기로 했다.
'두 개 뽑아서 더하기', '피보나치 수', '타겟 넘버' 문제들을 풀었다.
'두 개 뽑아서 더하기'는 저번에 못 풀었다가 다시 풀어본 문제인데 이번에는 수월하게 풀려서 좋았다.
꾸준히 코테 연습을 했던 게 도움이 된것같다.
'피보나치수'는 재귀로 풀어보니까 시간초과가 떴고 for문을 풀어서 해결했다.
그리고 새롭게 알게 된 점은 자료형의 크기에 제한이 있는 언어를 쓸 경우 (A + B) % C ≡ ( ( A % C ) + ( B % C) ) % C라는 성질을 이용해서 매번 계산 결과에 1234567으로 나눈 나머지를 대신 넣는 것으로 int 범위 내에 항상 값이 존재함을 보장할 수 있다.
누군가가 설명글에 올려둔 것인데 이대로 풀었더니 풀렸다.
'타겟 넘버' 문제는 dfs 문제였는데 제일 오래 끌었던 문제였다.
결국 재귀를 사용해서 풀었는데 문제를 작은것부터 하나씩 해결해가면서 풀이하는게 아직은 쉽지 않다,,
앞으로 더 문제들을 풀어봐야겠다
댓글