-
기둥과 보 설치코딩 테스트/Level 3 2020. 10. 11. 11:30반응형
기둥과 보 설치
2020 KAKAO BLIND RECRUITMENT
819명 완료https://programmers.co.kr/learn/courses/30/lessons/60061
def solution(n, build_frame): result = set() for x, y, a, b in build_frame: if b == 1: # build result.add((x, y, a)) if not check(result): result.remove((x, y, a)) elif b == 0: # delete if (x, y, a) in result: result.remove((x, y, a)) if not check(result): result.add((x, y, a)) return sorted(list(each) for each in result) def check(result): for x, y, a in result: if a == 0: # 기둥 if not (y == 0 or (x - 1, y, 1) in result or (x, y, 1) in result or (x, y - 1, 0) in result): return False else: # 보 if not ((x, y - 1, 0) in result or (x + 1, y - 1, 0) in result or ((x - 1, y, 1) in result and (x + 1, y, 1) in result)): return False return True
테스트 1 〉 통과 (0.07ms, 10.7MB) 테스트 2 〉 통과 (0.09ms, 10.6MB) 테스트 3 〉 통과 (0.08ms, 10.8MB) 테스트 4 〉 통과 (0.12ms, 10.8MB) 테스트 5 〉 통과 (0.13ms, 10.8MB) 테스트 6 〉 통과 (0.35ms, 10.8MB) 테스트 7 〉 통과 (0.05ms, 10.9MB) 테스트 8 〉 통과 (0.07ms, 10.8MB) 테스트 9 〉 통과 (0.09ms, 10.8MB) 테스트 10 〉 통과 (13.23ms, 10.9MB) 테스트 11 〉 통과 (46.04ms, 13.1MB) 테스트 12 〉 통과 (10.58ms, 11MB) 테스트 13 〉 통과 (48.04ms, 13.1MB) 테스트 14 〉 통과 (11.47ms, 11.1MB) 테스트 15 〉 통과 (49.78ms, 13.2MB) 테스트 16 〉 통과 (11.61ms, 10.9MB) 테스트 17 〉 통과 (44.76ms, 13.2MB) 테스트 18 〉 통과 (36.59ms, 12.1MB) 테스트 19 〉 통과 (40.07ms, 12.2MB) 테스트 20 〉 통과 (38.96ms, 12.1MB) 테스트 21 〉 통과 (41.78ms, 12.1MB) 테스트 22 〉 통과 (36.11ms, 12MB) 테스트 23 〉 통과 (40.25ms, 12.4MB)
set도 딕셔너리처럼 속도가 빠르기 때문에..
반복적인 작업에 유리합니다.set은 원소로 리스트를 쓸 수 없기 때문에
튜플을 써야 합니다.굳이 set이 때문이 아니더라도
리스트보다 튜플이 빠르기 때문에
튜플을 쓸 수 있는 상황이라면
튜플을 사용하는 게 좋습니다.반응형