programmers.co.kr/learn/courses/30/lessons/60061
코딩테스트 연습 - 기둥과 보 설치
5 [[1,0,0,1],[1,1,1,1],[2,1,0,1],[2,2,1,1],[5,0,0,1],[5,1,0,1],[4,2,1,1],[3,2,1,1]] [[1,0,0],[1,1,1],[2,1,0],[2,2,1],[3,2,1],[4,2,1],[5,0,0],[5,1,0]] 5 [[0,0,0,1],[2,0,0,1],[4,0,0,1],[0,1,1,1],[1,1,1,1],[2,1,1,1],[3,1,1,1],[2,0,0,0],[1,1,1,0],[2,2,0,1]] [[
programmers.co.kr
2020 KAKAO BLIND RECRUITMENT
def solution(n, build_frame):
def init(n):
res = []
for y in range(n+1):
st = []
for x in range(n+1):
st.append([x,y,0,0])
res.append(st)
return res
def check(answer,x,y):
ser = True
if answer[y][x][2] == 1:
if y == 0 or answer[y][x][3] == 1 or answer[y-1][x][2] == 1 or (x > 0 and answer[y][x-1][3] == 1) :
ser = True
else:
return False
elif answer[y][x][3] == 1:
if (y > 0 and answer[y-1][x][2] == 1) or (y>0 and x < n and answer[y-1][x+1][2] == 1) or (x > 0 and x < n and answer[y][x - 1][3] == 1 and answer[y][x + 1][3] == 1):
ser = True
else:
return False
return ser
answer = init(n)
for i in range(len(build_frame)):
x,y = build_frame[i][0],build_frame[i][1]
if build_frame[i][3] == 1: #설치
if build_frame[i][2] == 0: #기둥
answer[y][x][2] = answer[y][x][2] + 1
if check(answer,x,y) is False:
answer[y][x][2] = answer[y][x][2] - 1
else: #보
answer[y][x][3] = answer[y][x][3] + 1
if check(answer,x,y) is False:
answer[y][x][3] = answer[y][x][3] - 1
else: #철거
if build_frame[i][2] == 0: #기둥
if answer[y][x][2] > 0:
answer[y][x][2] = answer[y][x][2] -1
if (check(answer,x,y) and check(answer, x ,y + 1) and check(answer,x - 1,y + 1)) is False:
answer[y][x][2] = answer[y][x][2]+1
else: #보
if answer[y][x][3] > 0:
answer[y][x][3] = answer[y][x][3] -1
if (check(answer,x,y) and check(answer,x - 1,y) and check(answer,x + 1,y)) is False:
answer[y][x][3] = answer[y][x][3]+1
sot = []
for i in range(len(answer)):
for j in range(len(answer)):
if answer[j][i][2] > 0:
sot.append([answer[j][i][0], answer[j][i][1], answer[j][i][2]-1])
if answer[j][i][3] > 0:
sot.append([answer[j][i][0], answer[j][i][1], answer[j][i][3]])
return sot
채점 결과
정확성: 28.8
합계: 28.8 / 100.0
뭐가 틀렸는지 알수가없네... 후... 다시 풀이 후 수정..
~참고
www.youtube.com/watch?v=PePZZip0E2I
여기 풀이보고 참고해서 풀었다... 아직 멀었구만,.
'2 > 프로그래머스' 카테고리의 다른 글
프로그래머스 연습 문제 - 불량 사용자 (0) | 2020.10.09 |
---|---|
프로그래머스 연습 문제 - 핸드폰 번호 가리기 (0) | 2020.10.08 |
프로그래머스 연습 문제 - 문자열 압축 (0) | 2020.10.06 |
프로그래머스 연습 문제 - 평균 구하기 (0) | 2020.10.05 |
프로그래머스 연습 문제 - 다음 큰 숫자 (0) | 2020.10.04 |