티스토리 뷰
문제
https://programmers.co.kr/learn/courses/30/lessons/17679
애니팡 같은 게임인데, 가로 세로 2*2 똑같은 문자가 있으면 팡 하고 사라짐.
사라진 빈 공간으로 위에 있던 블럭들이 위 -> 아래 방향으로 떨어진다.
세로 m, 가로 n, 보드 board 3개가 주어지고
지워지는 블록이 몇개인지 return 하는 문제.
접근방법
1. shift하기 좋게 array 재구성
팡 터질 때 위에 있는 블록이 아래로 내려가야 하는 shift 작업이 필요한데, 입력받은 배열은
위
1 2 3
4 5 6
7 8 9
아래
요런식으로 되어 있기 때문에, 위에어 아래로 떨어질려면 한 array에서 다른 array로 이동시켜주는 작업을 해줘야 하기 때문에, 복잡하기도 하고 오류가 날 수도 있기 때문에 배열 모양을 다르게 바꿔줬다.
아래 7 4 1
아래 8 5 2 위
아래 9 6 3
요런식으로 바꿔주게 되면, 만약 4가 삭제가 된다면 741 array의 첫번째 idx 값만 remove 해주면 자연스럽게 위에 있는 블록이 shift 되기 때문에 오류가 날 확률이 적다고 생각했기 때문이다.
2. 한번에 팡 터기지
한 턴당 한번에 팡 터져야 한다. 그렇기 떄문에 터트려야 할 값을 발견할 때마다 터트리는 방식이 아닌 idx 값만 저장해뒀다가, 한꺼번에 팡 터트리도록 했다.
터트릴 idx값을 내림차순으로 하여 idx 꼬임이 없도록 했다. idx값이 1 차이날때 안날때도 구분지어줬다.
솔직히 요렇게 짯을 때 효율성이 별로라 생각했었는데 속도도 빨랏고 통과했다.
코드
'개발 블로그 > 알고리즘' 카테고리의 다른 글
[Swift] 프로그래머스 - 오픈채팅방 (0) | 2020.10.30 |
---|---|
[Swift] 프로그래머스 - 캐시 (0) | 2020.10.29 |
[Swift] 프로그래머스 - [1차] 뉴스 클러스터링 (0) | 2020.10.24 |
[Swift] 프로그래머스 - 예상 대진표 (0) | 2020.10.23 |
[Swift] 프로그래머스 - 영어 끝말잇기 (0) | 2020.10.22 |
- Total
- Today
- Yesterday
- 카카오 블라인드2018
- 백준 1946
- Swift
- Github Search
- 프로그래머스 오픈채팅방
- ios
- TransitionStyle
- Level 3
- 백준 신입사원
- RxDataSource
- 위젯
- presentStyle
- 프로그래머스 추석트래픽
- today extension
- ReactorKit
- 알고리즘
- 괄호연산
- VIPER 패턴
- Stack
- 카카오블라인드2018
- UIModalPresentationStyle
- BaseViewController
- Widget
- 카카오 블라인드 2018
- 아키택처
- BaseTableViewController
- 자기PR
- 1차 뉴스 클러스터링
- RxSwift
- 프로그래머스 캐시
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |