728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/42890?language=python3
코딩테스트 연습 - 후보키
[["100","ryan","music","2"],["200","apeach","math","2"],["300","tube","computer","3"],["400","con","computer","4"],["500","muzi","music","3"],["600","apeach","music","2"]] 2
programmers.co.kr
최종 코드
GitHub - hwayeon351/Programmers-Algorithms: 프로그래머스 알고리즘 소스 코드 모음
프로그래머스 알고리즘 소스 코드 모음. Contribute to hwayeon351/Programmers-Algorithms development by creating an account on GitHub.
github.com
from itertools import combinations
def solution(relation):
answer = 0
candidate = [[] for _ in range(len(relation[0])+1)]
attr = [i for i in range(len(relation[0]))]
for r in range(1, len(attr)+1):
#1. n C r = 예비 후보키 조합 생성
combi = combinations(attr, r)
#2. 각 예비 후보키가 후보키가 될 수 있는지 체크
for c in combi:
#2-1. 유일성 체크
visit = []
for t in relation:
data = ""
for key in c:
data += t[key]
#유일성을 만족하지 않는다
if data in visit: break
visit.append(data)
#유일성을 만족한 경우
#2-2. 최소성 체크
else:
new_candi = list(c)
for i in range(1, len(new_candi)+1):
ck = True
#현재 후보키
for candi in candidate[i]:
for a in candi:
if a in new_candi: continue
else: break
#현재 후보키의 모든 속성이 예비 후보키에 있는 경우
else:
ck = False
break
if not ck: break
else:
candidate[len(new_candi)].append(new_candi)
for c in candidate:
answer += len(c)
return answer
풀이 과정
풀이 시간 47분
참고
- 4. 무지의 먹방 라이브 ->2021.09.02 - [코테 노트/프로그래머스] - Level 4 무지의 먹방 라이브 <2019 KAKAO BLIND RECRUITMENT> Python 3
Level 3 매칭 점수 <2019 KAKAO BLIND RECRUITMENT> Python 3
https://programmers.co.kr/learn/courses/30/lessons/42893?language=python3 코딩테스트 연습 - 매칭 점수 매칭 점수 프렌즈 대학교 조교였던 제이지는 허드렛일만 시키는 네오 학과장님의 마수에서 벗어나, 카..
hwayomingdlog.tistory.com
- 7. 블록 게임 ->
728x90
반응형
'코테 노트 > 프로그래머스' 카테고리의 다른 글
Level 4 무지의 먹방 라이브 <2019 KAKAO BLIND RECRUITMENT> Python 3 (0) | 2021.09.02 |
---|---|
Level 3 길 찾기 게임 <2019 KAKAO BLIND RECRUITMENT> Python 3 (0) | 2021.09.02 |
Level 2 오픈채팅방 <2019 KAKAO BLIND RECRUITMENT> Python 3 (0) | 2021.09.02 |
Level 1 실패율 <2019 KAKAO BLIND RECRUITMENT> Python 3 (0) | 2021.09.02 |
Level 2 수식 최대화 <2020 카카오 인턴십> Python 3 (0) | 2021.09.02 |