일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- python
- 2020 카카오 인턴십
- 경주로 건설
- 15686번
- 미세먼지 안녕!
- 19238번
- SW Expert Academy
- QueryDSL 기초
- 감소하는 수
- 9095번
- HTML 기초
- 수식 최대화
- 1038번
- 17144번
- 파이썬
- 1789번
- 어른 상어
- SW ExpertAcademy
- 베스트엘범
- 보석 쇼핑
- 프로그래머스
- 12869번
- 키패드 누르기
- 거울 설치
- 16234번
- 백준 알고리즘
- 빛의 경로 사이클
- 14499번
- 스타트 택시
- 12865번
Archives
- Today
- Total
보물창고 블로그
2018 KAKAO BLINDRECRUITMENT 1차 프렌즈4블록 본문
728x90
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/17679
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
먼저 board는 문자열로 주어지므로 처리하기 용이함을 위해 map1이라는 2차원 리스트를 만들어 각 문자를 한 글자씩 2차원 리스트 원소로 넣어준 뒤에 각 지점을 기준으로 아래, 오른쪽, 오른쪽 아래가 같을 경우에 change라는 딕셔너리에 위치를 넣고, 각 지점이 지워질 때 0으로 대체하고 블록 개수를 answer값에 더해준다. 이후 위에 있는 블록들이 떨어지는 것을 처리하는 함수 clean을 이용하여 블록들을 아래로 떨어뜨리고 다시 탐색을 반복하여 지워질 블록이 없어질 때까지 계속 반복한다. 마지막에 answer값을 반환한다.
def clean(m, n, map1):
for i in range(n):
for j in range(m - 2, -1, -1):
if map1[j][i] != 0:
count = 0
while 1:
if j + count + 1 < m and map1[j + count + 1][i] == 0:
count += 1
else:
break
if count > 0:
map1[j + count][i] = map1[j][i]
map1[j][i] = 0
def solution(m, n, board):
dx = [0, 1, 1, 0]
dy = [0, 0, 1, 1]
answer = 0
map1 = [[0] * n for _ in range(m)]
for i in range(m):
for j in range(n):
map1[i][j] = board[i][j]
while 1:
change = {}
for i in range(m):
for j in range(n):
if i + 1 < m and j + 1 < n:
if map1[i][j] == map1[i][j + 1] == map1[i + 1][j] == map1[i + 1][j + 1] != 0:
for d in range(4):
if change.get((i + dx[d], j + dy[d])) is None:
change[(i + dx[d], j + dy[d])] = True
if change:
answer += len(change)
for p in change:
map1[p[0]][p[1]] = 0
clean(m, n, map1)
else:
break
return answer
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
2018 KAKAO BLINDRECRUITMENT 1차 비밀지도 (0) | 2020.03.26 |
---|---|
2018 KAKAO BLINDRECRUITMENT 1차 캐시 (0) | 2020.03.26 |
2018 KAKAO BLINDRECRUITMENT 1차 셔틀버스 (0) | 2020.03.26 |
2018 KAKAO BLINDRECRUITMENT 1차 뉴스 클러스터링 (0) | 2020.03.26 |
2018 KAKAO BLINDRECRUITMENT 1차 추석 트래픽 (0) | 2020.03.26 |
Comments