새소식

Computer Science/코딩테스트 문제 풀이

[N시간만에 끝내는 Python 코딩테스트] 7편 : 2018 카카오 코딩테스트 6번 프렌즈4블록

  • -

https://school.programmers.co.kr/learn/courses/30/lessons/17679

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

https://www.youtube.com/watch?v=sSBs9l7p8XQ

 

 

 

강의에서 numpy같은 라이브러리를 적극 활용하는 것 보고 나도 그래야겠다는 생각이 많이 든다. 

이번 문제 역시 천천히 아는데로 풀면 나온다. 

 

import numpy as np def solution(m, n, board): s = [list(i) for i in board] s = np.array(s) while True: delete_loc = [] # 더 이상 지울 캐릭터가 없을 때까지 반복 # 조건에 맞아서 지워질 캐릭터 위치 저장 for i in range(m-1): for j in range(n-1): if s[i,j] == '_': continue if np.all(s[i:i+2, j:j+2] == s[i,j]): delete_loc.append([i,j]) # 조건에 부합하지 않고 더이상 지울 캐릭터가 없으면 멈춤 if not delete_loc: break else: # 지울 것들을 지워준다 for i, j in delete_loc: s[i:i+2, j:j+2] = '_' # 지울꺼 지웠으니 지운것보다 위에 있는 것들을 아래로 내려야함 for _ in range(m): for j in range(n): for i in range(1,m): if s[i,j]=='_': s[i,j], s[i-1,j] = s[i-1,j], '_' answer = 0 for k in s.tolist(): answer += k.count('_') return answer m = 4 n = 5 board = ["CCBDE", "AAADE", "AAABF", "CCBBF"] print(solution(m, n, board))
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.