Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 구현
- 자물쇠와열쇠
- 17404
- 그래프탐색
- 백준
- 벽부수고이동하기
- 트리의지름
- RGB거리2
- DP
- DFS
- 최소스패닝트리
- 프림알고리즘
- 도넛과막대그래프
- 파이썬
- 최단경로
- 이모티콘할인행사
- 거리두기확인하기
- 징검다리건너기
- [1차]캐시
- javascript
- 프로그래머스
- 사이클게임
- 다익스트라
- 파괴되지않은건물
- 두큐합같게만들기
- 위상정렬
- 알고리즘
- 큐
- BFS
- 섬연결하기
Archives
- Today
- Total
블로그 이름 뭐로 하지
[알고리즘/파이썬] 프로그래머스 - 프렌즈4블록 본문
문제
https://school.programmers.co.kr/learn/courses/30/lessons/17679
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
2018 카카오 문제...! 확실히 이 때는 시뮬이나 그래프 문제들이 많이 나왔던 것 같다. 지금은... 더보기
삼성 기출 풀어본 사람 특: 이런 구현 문제 되게 좋아함
하라는대로 하면 된다.
2*2 같은 거 있으면 체크해주고 한 번에 0으로 바꿔준다.
down 함수를 통해서 빈 공간을 채우기 위해 위에 떠있는 아이들을 내려준다.
코드
from collections import deque
def solution(m, n, board):
answer = 0
for i in range(len(board)):
tmp_list = [a for a in board[i]]
board[i] = tmp_list
def down(board):
for i in range(n):
for j in range(m-1,-1,-1):
if board[j][i] == 0:
tmp_j = j
while True:
tmp_j -= 1
if tmp_j < 0:
break
if board[tmp_j][i] != 0:
board[j][i] = board[tmp_j][i]
board[tmp_j][i] = 0
break
while True:
q = deque()
flag = 0
for i in range(m-1):
for j in range(n-1):
a,b,c,d = board[i][j],board[i+1][j],board[i+1][j+1],board[i][j+1]
if a==b and b==c and c==d and a!=0:
flag = 1
q.append((i,j))
q.append((i+1,j+1))
q.append((i+1,j))
q.append((i,j+1))
if flag == 0:
break
while q:
x,y = q.pop()
if board[x][y] != 0:
board[x][y] = 0
answer += 1
down(board)
return answer
'알고리즘' 카테고리의 다른 글
[알고리즘/파이썬] 프로그래머스 - 거리두기 확인하기 (0) | 2024.01.24 |
---|---|
[알고리즘/파이썬] 프로그래머스 - 징검다리 건너기 (1) | 2024.01.21 |
[알고리즘/파이썬] 백준 2252 - 줄 세우기 (1) | 2024.01.21 |
[알고리즘/파이썬] 백준 17404 - RGB거리 2 (1) | 2024.01.21 |
[알고리즘/파이썬] 프로그래머스 - 이모티콘 할인행사 (0) | 2024.01.18 |