Notice
Recent Posts
Recent Comments
Link
DevKim
[Python] 2018 KAKAO BLIND RECRUITMENT - 프렌즈 4 블록 본문
728x90
programmers.co.kr/learn/courses/30/lessons/17679
코딩테스트 연습 - [1차] 프렌즈4블록
프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록". 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙
programmers.co.kr
[ 알고리즘 ]
구현
[문제 접근]
처음에 row와 col을 뒤집는 과정이 이 문제의 핵심키라고 생각한다.
이 문제를 통해 zip을 사용하여 한줄로 row와 col을 뒤집는 코드를 배웠다. 집합 set을 이용하여 2*2의 겹치는 캐릭터들을 합쳐주며 중복은 없애주고, 중복되어 없어진 부분을 임의의 문자로 채워주었다. 더 이상의 삭제되는 프렌즈가 없을 때까지 반복
[코드]
def solution(m, n, board):
answer = 0
board=list(map(list,zip(*board))) # row와 col 뒤집기
while True:
delete=set()
for i in range(1,n):
for j in range(1,m):
if board[i][j]==board[i-1][j-1]==board[i-1][j]==board[i][j-1]!='_':
delete |=set([(i,j),(i-1,j-1),(i-1,j),(i,j-1)])
if len(delete)==0:
return answer
answer+=len(delete)
# 삭제된 것 지워주기
for x,y in delete:
board[x][y]=0
List=[]
for i in range(n):
List.append(['_']*board[i].count(0))
for i in range(n):
board[i]=List[i]+[data for data in board[i] if data!=0]
return answer
728x90
'알고리즘 PS' 카테고리의 다른 글
[Python] 프로그래머스 LV.03 - 줄 서는 방법 (0) | 2021.03.13 |
---|---|
[Python] 프로그래머스 LV.03 - 최고의 집합 (0) | 2021.03.13 |
[Python] 프로그래머스 Lv.02 - 쿼드압축 후 개수 세기 (0) | 2021.03.08 |
[Python]2021 KAKAO BLIND RECRUITMENT - 순위 검색 (0) | 2021.03.08 |
[Python] 프로그래머스 Lv.02 - 가장 큰 정사각형 찾기 (0) | 2021.03.08 |
Comments