일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- level1
- level4
- BFS
- 파이썬
- py
- Matrix Factorization
- D3
- 대학원
- androidstudio
- 내휴학생활중의아주큰일
- MSBuild
- 컨트리뷰톤
- 자바
- 안드로이드스튜디오
- git
- Python
- 컴퓨터비전
- java
- level3
- SWEA
- LEVEL2
- 어렵다
- 프로그래머스
- WebOS
- SQL
- Github
- 대학원일기
- 휴학
- 다시풀기
- build
Archives
- Today
- Total
bit가 눈 앞에서 왔다갔다
Py) 프로그래머스 64064 불량 사용자 본문
https://programmers.co.kr/learn/courses/30/lessons/64064?language=python3
1차: 1시간 25분
2차: 30분
3차: 8분
0. 입출력
1.
1-1. 내 로직
1) 길이로 판단, 길이가 동일하면 banned_id에 있는 원소가 user_id 각각을 가리킬 수 있는지 확인
2) 조합으로 계산해 줄 수 있게 list에 넣어준다.
1-2. 내 코드
def solution(user_id, banned_id):
answer = 0
case = dict()
cases = []
tmp = []
banned_id.sort()
user_id.sort()
for i in range(len(banned_id)):
tmp = []
for k in user_id:
if len(banned_id[i]) == len(k): # 길이가 동일하다면 비교시작
flag = 0
for j in range(0, len(banned_id[i])):
if banned_id[i][j] != k[j]:
if banned_id[i][j]=='*':
continue
else:
flag = 1
break
if flag == 0:
tmp.append(k) # 후보군에 넣기
cases.append(tmp)
return answer
리스트는 만들 수 있는데, 경우의 수 계산을 어떻게 해줘야할지 모르겠음'
2. Solution
2-1. 로직
1) banned_id와 user_id를 순열로 후보를 구한다.
2) 생성된 리스트 중 banned_id가 user_id를 가리킬 수 있는지 확인한다.
3) 가리킬 수 있다면 해당 리스트의 개수를 세고, 일치하다면 답에 추가한다.
2-2. 코드
from itertools import permutations
def solution(user_id, banned_id):
answer = []
candidates=set()
count=0
if len(user_id)==len(banned_id):
return 1
for i in permutations(user_id,len(banned_id)):
count=0
for idx in range(len(banned_id)):
if len(i[idx])!=len(banned_id[idx]):
break
else:
if check(i[idx],banned_id[idx]) == False:
break
else :
count+=1
if count == len(banned_id):
candidate=set(i)
if candidate not in answer:
answer.append(candidate)
return len(answer)
def check(checkid,bannedid):
for i in range(len(checkid)):
if bannedid[i]=="*":
continue
else :
if checkid[i] == bannedid[i]:
continue
else:
return False
return True
3. 새롭게 알게 된 것:
from itertools import permutations
조합 - 순서 상관없음
순열 - 순서 상관있음 (순서 다르면 다른 걸로 취급)
반응형
'Algorithm > Prob' 카테고리의 다른 글
Py) 프로그래머스 92344 파괴되지 않은 건물 (0) | 2022.04.08 |
---|---|
Py) 프로그래머스 60059 자물쇠와 열쇠 (0) | 2022.04.07 |
Java) 프로그래머스 42577 전화번호 목록 (0) | 2022.03.29 |
Py) 프로그래머스 67258 보석 쇼핑 (0) | 2022.03.25 |
Py) 프로그래머스 64061 크레인 인형뽑기 게임 (0) | 2022.03.23 |
Comments