Skip to content

Instantly share code, notes, and snippets.

@DongguemYoo
Last active June 4, 2020 01:09
Show Gist options
  • Save DongguemYoo/fd8b7e93eee3dd5fc6a20c5b88715e0a to your computer and use it in GitHub Desktop.
Save DongguemYoo/fd8b7e93eee3dd5fc6a20c5b88715e0a to your computer and use it in GitHub Desktop.
코딩테스트 연습 스킬트리.py ★★★★★★(멋짐점수)
//굉장히 단순하게 품
//방식
//skill = CBD
//skill_tree = BACDE
1.skill_tree에서 skill에 포함되어 있는 문자열을 스킬의 인덱스로 변환한다.
ex) BACDE -> 1A0DE
2.숫자를 제외한 문자열을 제거한다
ex)1A0DE -> 10
3.길이가 0이라면 가능한 스킬트리이다.
4.for문을 0부터 돌려서 인덱스를 비교하여 같지 않으면 break
//다른사람 풀이 레전드 있음;;
//for문에 break를 달아서 else를 달았음;;
//break를 타지 않으면 else이다...와우..지렷다진짜...
import re
def solution(skill, skill_trees):
answer = 0
for tree in skill_trees:
i =0
for i in range(i,len(skill)):
tree = tree.replace(skill[i],str(i))
tree = re.findall("\d",tree)
if len(tree) ==0:
answer+=1
continue
a = 0;
able = False
for a in range(0,len(tree)):
if str(a) == tree[a]:
able = True
else:
able = False
break
if able:
answer+=1
return answer
//////////////////////////////////////////다른사람풀이//////////////////////////////////////////다른사람풀이
def solution(skill, skill_trees):
answer = 0
for skills in skill_trees:
skill_list = list(skill) //리스트에 넣어서 pop을 할 생각을함
//pop을 하는 이유
CBD라고 치면 Pop을 하면 C,B,D 순으로 skill이 나오게 된다
이 순서와 맞지 않으면 안되는 스킬트리이므로 완벽하다.
skills에 skill이 하나도 있지 않거나
break를 타지 않고 모두 pop에 맞게 나왔다면
else를 타서 정답에 추가한다...와우...
for s in skills:
if s in skill:
if s != skill_list.pop(0):
break
else:
answer += 1
return answer
//////////////////////////////////////////다른사람풀이//////////////////////////////////////////다른사람풀이
배운점
pop이라는 자료구조를 좀 이용하자...인덱스를 순서대로 비교할 일이 생긴다면 pop을 활용하여 보자!!!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment