일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- AI Tech 4기
- Naver boostcamp
- 파이썬
- 구현
- Naver boostcourse
- Django
- 4기
- 백엔드
- QNA 봇
- 프로그래밍
- 백준
- BOJ
- 대회
- 웹 프로그래밍
- 서버
- 장고
- boostcourse
- 서블릿
- 프로그래머스
- 레벨2
- P Stage
- 웹
- 부스트캠프
- 네이버
- 풀스택
- Customer service 구현
- AI Tech
- cs50
- 2021 Dev-matching 웹 백엔드 개발자
- sts
Archives
- Today
- Total
daniel7481의 개발일지
[프로그래머스]후보키 본문
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/42890
풀이
간단한 구현 문제였다. AI Tech4기 시험이 코앞으로 다가온 지금, 마땅히 손에 잡히는게 없어서 코테 문제만 주구장창 풀고 있다. 한 달 반이 넘는 기간동안 준비를 한만큼 좋은 결과가 있기를 바란다. 시험을 본 후 후기 또한 나중에 올리도록 하겠다. 이 문제는 딕셔너리 & combinations 모듈을 이용해서 풀 수 있는데, DB에서 후보키를 판별하라는 프로그램이다. 두 가지 조건인 유일성과 최소성만 만족하면 되는데, 일단 키를 만들 수 있는 모든 경우의 수를 combinations으로 구하고, 구한 인덱스를 통하여 딕셔너리를 하나 선언한 후 만약 중복된 키가 발견된다면(에러를 발생시키지 않는다면) 멈추고 flag=True로 해주었다. 이 부분이 유일성을 만족하는지 확인하는 부분이고, 최소성은 들어오는 경우의 수(pos)에 대하여 다시 한번 combinations로 모든 경우의 수를 구한 다음, 만약 이미 정답 처리가 된 키가 ans 딕셔너리에 있을 경우 탐색할 필요도 없이 continue해주면 된다
from itertools import combinations
def solution(relation):
answer = 0
poss = []
#print(list(map(list, combinations([j for j in range(len(relation[0]))], 1))))
for i in range(1, len(relation[0])+1):
poss += list(combinations([j for j in range(len(relation[0]))], i))
ans = {}
for pos in poss:
sec_pos = []
for k in range(1, len(pos)+1):
sec_pos += list(combinations(pos, k))
con_flag = False
for sp in sec_pos:
if sp in ans:
con_flag = True
break
if con_flag:
continue
dic = {}
flag = False
#print(pos)
for i in range(len(relation)):
compare = []
for p in pos:
compare.append(relation[i][p])
compare = tuple(compare)
try:
dic[compare]
flag = True
break
except:
dic[compare] = True
#print(dic)
#print(flag)
if not flag:
ans[pos] = True
answer += 1
return answer
반응형
'프로그래머스' 카테고리의 다른 글
[프로그래머스]n^2 배열 자르기 (0) | 2022.08.16 |
---|---|
[프로그래머스]키패드 누르기(2020 카카오 인턴쉽) (0) | 2022.08.12 |
[프로그래머스]섬 연결하기 (0) | 2022.07.31 |
[프로그래머스]소수 찾기 (0) | 2022.07.31 |
[프로그래머스]게임 맵 최단거리 (0) | 2022.07.30 |