프로그래머스 - 크레인 인형뽑기 게임

CCKN·2020년 12월 8일
0

코딩테스트

목록 보기
1/24
post-thumbnail

크레인 인형뽑기 게임

첫 풀이베스트 풀이개선된 풀이
0.27ms0.19ms0.18ms
0.28ms0.19ms0.12ms
0.16ms0.20ms0.17ms
0.27ms0.21ms0.59ms
0.24ms0.22ms0.16ms
0.21ms0.27ms0.18ms
0.81ms0.43ms0.15ms
0.58ms0.43ms0.32ms
0.92ms0.46ms0.33ms
0.64ms0.47ms0.32ms
0.94ms0.63ms0.42ms

최초의 내 풀이

프로그래머스 베스트 풀이

최초 풀이 과정

  1. 2차원 배열을 생성하고
  2. 보드의 인형들을 2차원 배열에 스택한다
    1. 보드를 뒤집어서 아래부터 쌓는다
    2. 스택시 빈 공간(0)은 스킵한다
  3. moves에 따라 인형들을 pop하여 다른 배열에 스택한다.
  4. stack을 반복순회한다.
    1. 인접한 인형과 같은 경우 -1로 변경한다.
    2. -1이 된 인형을 삭제한다.
    3. 삭제 플래그가 false로 유지되는 경우 반복을 중지한다.

다듬을 수 있는 사항

  • 쓸모없는 변수, 구문 삭제
  • moves를 굳이 map으로 하나씩 뺄 필요가 있을까? 그냥 -1만 해도 될 듯 하다.
  • 순서 3에서 인형을 비교하지 않고 전부 다 쌓은 후에 삭제를 하는 방식
    • 쌓고 터지는 과정에서 놓치는 인형이 있지 않을까 하는 고민때문이었다.
    • 베스트 풀이를 보고 잘 생각해보니 해당 문제의 케이스에서는 그럴 일이 없다.
    • 해당 부분을 줄이면 다이어트가 가능하다.
  • 현재 빈배열에서 pop을 하는 경우를 막고 있는데 JS는 빈배열에 pop을 했을 때 에러가 나는 것이 아니라 undefined를 뱉는다.
    • 해당 사례에서 undefined를 검사해서 하는 것이 로직이 간단해질 듯

고민 사항

  • 사용하는 변수 및 자료형을 상위로 옮기는게 좋은가 아니면 사용하는 곳에 선언하는 것이 좋을까?
    • 전체적으로 쓰는 변수들은 위로
    • 지역적으로 쓰는 변수는 아래에서 써도 무방할 듯

개선된 풀이

0개의 댓글