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 |
Tags
- 브라이틱스 서포터즈
- 삼성 SDS
- 직원 이직여부
- Brigthics를 이용한 분석
- 데이터분석
- 혼공
- 데이터 분석
- 포스코 아카데미
- Brightics
- 삼성SDS Brigthics
- 직원 이직률
- 삼성SDS Brightics
- 브라이틱스
- 삼성 SDS Brigthics
- 혼공학습단
- Brigthics Studio
- Brigthics
- Brightics Studio
- 팀 분석
- 혼공머신러닝딥러닝
- 추천시스템
- 모델링
- Brightics를 이용한 분석
- 개인 의료비 예측
- 혼공머신
- 포스코 청년
- 노코드AI
- 삼성SDS
- 캐글
- 영상제작기
Archives
- Today
- Total
데이터사이언스 기록기📚
[프로그래머스/Python] Level 2_[1차] 프렌즈4블록 (2018 KAKAO BLIND RECRUITMENT) 본문
Coding Test/프로그래머스(Python)
[프로그래머스/Python] Level 2_[1차] 프렌즈4블록 (2018 KAKAO BLIND RECRUITMENT)
syunze 2023. 10. 26. 20:46📌문제 유형
2018 KAKAO BLIND RECRUITMENT
📌문제
📌나의 문제풀이
- dfs 함수에서 4개가 같은 블록인지 확인 -> 같은 블록인 경우, 좌표 넣기
- 같은 블록이 터지면, 남아있는 블록 내리기
def dfs(x,y,m,n,new_board):
dx = [0,1,1]
dy = [1,0,1]
flag = 0
for k in range(3):
nx = x + dx[k]
ny = y + dy[k]
if 0 <= nx < m and 0 <= ny < n:
if new_board[x][y] == new_board[nx][ny]:
continue
else:
flag = 1
break
else:
flag = 1
break
if flag == 0:
return [(x,y), (x+1,y), (x,y+1), (x+1,y+1)]
else:
return []
def solution(m, n, board):
answer = 0
new_board = []
for k in range(len(board)):
new_board.append(list(board[k]))
while True:
list_ = []
for i in range(len(new_board)):
for j in range(len(new_board[0])):
if new_board[i][j] != '.':
check = dfs(i,j,m,n,new_board)
if check != []:
list_.extend(check)
list_ = list(set(list_))
if len(list_) == 0:
break
else:
answer += len(list_)
for a,b in list_:
new_board[a][b] = ''
# 돌려서 지우기
new_board = list(zip(*new_board))
new = []
for l in range(len(new_board)):
tmp = []
for t in range(len(new_board[l])):
if new_board[l][t] != '':
tmp.append(new_board[l][t])
tmp_n = ['.' for _ in range(len(new_board[l]) - len(tmp))]
tmp_n.extend(tmp)
new.append(tmp_n)
new_board = list(map(list,zip(*new)))
return answer
📌다른 사람의 문제풀이
def pang(m, n, board):
t_board = []
for x in range(m):
t_board.append([])
for y in range(n):
t_board[x].append(board[x][y])
flag = False
for x in range(m-1):
for y in range(n-1):
if len(set([board[x][y], board[x][y+1], board[x+1][y], board[x+1][y+1]])) == 1:
if board[x][y] != '0':
flag = True
t_board[x][y] = '0'
t_board[x][y+1] = '0'
t_board[x+1][y] = '0'
t_board[x+1][y+1] = '0'
return flag, t_board
def restruct(m, n, board):
re_board = [''] * m
for x in range(n):
ys = ''.join([board[y][x] for y in range(m)]).replace('0','').zfill(m)
for y in range(m):
re_board[y] += ys[y]
return re_board
def get_num(m, n, board):
cnt = 0
for x in range(m):
for y in range(n):
if board[x][y] == '0':
cnt += 1
return cnt
def solution(m, n, board):
flag = True
while flag:
flag, board = pang(m, n, board)
board = restruct(m, n, board)
return get_num(m, n, board)
📌리뷰
- 행렬 돌리기 : board = list(map(list,zip(*new)))
728x90
'Coding Test > 프로그래머스(Python)' 카테고리의 다른 글
[프로그래머스/Python] Level 2_거리두기 확인하기 (2021 카카오 채용연계형 인턴십) (0) | 2023.10.31 |
---|---|
[프로그래머스/Python] Level 2_2개 이하로 다른 비트 (월간 코드 챌린지 시즌 2) (0) | 2023.10.31 |
[프로그래머스/Python] Level 2_삼각 달팽이(월간 코드 챌린지 시즌1) (0) | 2023.10.17 |
[프로그래머스/Python] Level 2_[3차] n진수 게임 (2018 KAKAO BLIND RECRUITMENT) (0) | 2023.10.13 |
[프로그래머스/Python] Level 2_[3차] 압축 (2018 KAKAO BLIND RECRUITMENT) (0) | 2023.10.11 |
Comments