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
- 절차지향
- 솝트 후기
- Python
- AWS
- nodejs
- S3
- 멋사
- 카카오
- 솝트
- 인공지능
- 사물인식
- 면접전형
- MongoDB
- objectdetection
- 파이썬
- 피로그래밍
- 백준
- 페이지네이션
- 합격후기
- 멋쟁이사자처럼
- jQuery
- spring-boot
- CRUD
- 서류전형
- 파이썬 #백준 #BFS
- yolov5
- 프로그래머스
- EC2
- Java
- jwt
Archives
- Today
- Total
찔끔찔끔씩😎
[프로그래머스] 기둥과 보 설치 - python (2020 카카오 블라인드 코딩테스트) 본문
728x90
https://programmers.co.kr/learn/courses/30/lessons/60061
문제
기둥, 보를 조건에 맞게 설치하자!
< 기둥 설치가 가능한 경우 >
1) 바닥에 있는 경우
2) 설치 왼쪽 지점에 보가 있는 경우
3) 설치 아래 지점에 기둥이 있는 경우
4) 설치 지점에 보가 있는 경우
< 보 설치가 가능한 경우 >
1) 설치 양옆에 보가 있는 경우
2) 설치 양옆 중 하나에 기둥이 잇는 경우
코드
def possible (result):
for x,y,a in result:
if a == 0: # 기둥
if y == 0 or (x-1,y,1) in result or (x,y-1,0) in result or (x,y,1) in result:
# 바닥에 있거나 or 보의 한쪽 끝에 있거나 or 다른기둥위에있거나 or 보위에 있으면
continue
else:
return False
elif a == 1: # 보
if ( (x-1,y,1) in result and (x+1,y,1) in result ) or ( (x,y-1,0) in result or (x+1,y-1,0) in result):
# ( 양쪽 끝부분이 동시에 연결되어 있거나 ) or ( 보의 한쪽 끝부분이 기둥위에 있으면 )
continue
else:
return False
return True
def solution(n, build_frame):
result = set()
for (x,y,a,b) in build_frame:
new = (x,y,a)
if b == 1: # 설치
result.add(new)
if not possible(result): # 설치한게 불가능한 구조면
result.remove(new) # 다시 삭제
elif b==0 and new in result:
result.remove(new) # 삭제
if not possible(result): # 삭제한게 불가능한 구조면
result.add(new) # 다시 설치
answer = map(list,result)
return sorted(answer)
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 완주하지 못한 선수 - python (코딩테스트 고득점 - Kit 해시) (0) | 2022.09.05 |
---|---|
[프로그래머스] 폰켓몬 - python (코딩테스트 고득점 Kit - 해시) (0) | 2022.09.01 |
[프로그래머스] 자물쇠와 열쇠 - python (2020 카카오 블라인드 코딩테스트) (0) | 2021.11.02 |
Comments