프로그래머스 - 등굣길

·2021년 9월 4일

2차원배열 memset

  • 오류 발생해서 그냥, 전체 for문 돌리면서 초기화함.

어떤 동작을 함수로 처리하려고 했는데, 오류나온다.
그러면 간단하게 처리하는 방법을 택하자.

memset 개념

  • long long 타입을 memset 초기화 불가하다!


memo 타입 어떻게?

  • 문제에서 모든 경우의 수를 1000,000,007로 나눈 나머지 이다.
    -> int형은 21억이어서 문제 없지 않을까? 생각할 수 있지만!

  • 나는 지금 memo[][] = memo[][] + memo[][] 이런식으로 할 생각인데 , 더하는 2개의 값이 모두 20억이면, 오버플로우다.

즉, 모든 경우의 수 값타입이 더해져서 초과할 수 있다는 거를 배제하면 안되고, 안전성에 맞게 타입을 정해야 한다.

  • 의심이 된다면, int형으로 진행하고 뭔가 안된다. 싶으면 longlong 으로 변경해도 된다.

  • ㅈㅁㄴㅇ

탑다운

=> 맨날 까먹는다.

  • 알고리즘 문제 해결전략 책 복습 많이 하자..

풀이전략 : 260619

  • 우측하단 좌표로 오는데 모든 경우의 수를 구해야한다.
    1번) 완탐
    2번) 탑다운을 생각함.

  • 그런데 이러한 중복 지점.으로 인해서 탑다운으로 진행.

그런데 중복으로 도달할 수 있는 경우는 최대 2번 (예를 들어 타겟지점을 향해 위에서 아래로 들어오는 경우 + 왼쪽에서 오른쪽으로 들어오는 경우) 가 있어서

  • 최단경로를 구하라고 했는데
    문제를 읽어보면, 오른쪽과 아래쪽으로만 움직이는 것이므로, 딱히 생각할 필요 없다.

탑다운 코드이고,

  • 알아야 하는 부분!!

-> 두번의 go 함수에서도 나머지 처리를 하고 있지만,
2번의 go함수를 더한 ret값이 초과될수 있기 때문에
더한 이후에도 반드시 나머지 처리를 해야 함

profile
🔥🔥🔥

0개의 댓글