Algorithm/1일 1코테
[💕 프로그래머스] 스킬트리
대인보우
2020. 12. 15. 14:27
반응형
Q.
programmers.co.kr/learn/courses/30/lessons/49993
코딩테스트 연습 - 스킬트리
programmers.co.kr
A.
def solution(sinput, skill_trees):
count = len(skill_trees) # 가능한 스킬트리의 갯수
for s in skill_trees:
check = ''
for v in s:
if v in sinput:
check += v
if check[0] != sinput[0]:
count -= 1
break
if check not in sinput:
count -= 1
return count
skill_trees 중에 가능한 스킬트리를 찾아내는 문제
1) count 변수 지정 - 불가능한 스킬트리를 만나면 -1씩 해줄 것이기 때문에 skill_trees의 총 갯수를 저장.
2) check는 sinput에 있는 변수를 누적해 줄 변수
ex. s가 BACDE일 때 sinput은 CBD => check에는 BCD가 저장됨.
3) s에서 하나씩 출력한 v가 sinput에 있을 때 check에 저장해주되, 만약 check의 첫번째와 sinput에 첫번째가 다르면,
check에는 두번째, 세번째,,, 등 첫번째 스킬이 아닌 다른 스킬이 저장되었다는 것이므로 count에서 -1을 해주고 멈춘다.
4) check[0]과 sinput[0]이 같더라도, sinput이 CBD일때 -> CD 등이 저장되었을 경우가 있기 때문에 -1
* 다른사람 풀이
def solution(skill, skill_trees):
answer = 0 # count 변수
for skills in skill_trees:
skill_list = list(skill) # 스킬순서
for s in skills:
if s in skill:
if s != skill_list.pop(0): #스킬순서와 skill에서 뽑은게 다르면
break # 멈춤
else:
answer += 1 # 아니면 answer
return answer
반응형