https://programmers.co.kr/learn/courses/30/lessons/49993
"""
1. 아이디어
어떻게 풀어야 할지 감이 안왔다. 숫자로 바꿔놓고 더하면서 차이가 나는걸 구하면 되나
집합으로 바꿔서 풀어야 하나 했는데 둘다 아니였다..
2. 시간복잡도
O(n^3)인데 n의 범위가 워낙 작아서 상관은 없는 거 같다.
"""
def solution(skill, skill_trees):
answer = 0
for skills in skill_trees:
skill_list = list(skill) # 리스트로 바꿔서
for x in skills:
if x in skill:
if x != skill_list.pop(0): # skill안에 있는 문자인데 순서대로 맞지 않으면 break한다.
break
else:
answer += 1
return answer
"""
가독성이 뛰어나서 들고 왔다!
"""
def solution(skill,skill_tree):
answer=0
for i in skill_tree:
skillist='' # 빈 문자열을 만들어서
for z in i:
if z in skill:
skillist += z # 만약 skill안에 존재하면 빈 문자열에 집어 넣고
if skillist==skill[0:len(skillist)]: # 추가된 문자열 크기만큼 비교한다.
answer+=1
return answer
# 복잡하게도 풀었다.. ㅋㅋㅋㅋㅋ
def solution(skill, skill_trees):
answer = 0
for i in skill_trees:
skill_collect = list(skill)
flag = True
for j in i:
if skill_collect and (j in skill_collect):
if skill_collect[0] == j:
skill_collect.pop(0)
else:
flag = False
break
if not skill_collect or flag:
answer += 1
return answer
def solution(skill, skill_trees):
tmp = []
for i in skill_trees: # skill 안에 있는 문자열이 아닌거는 다 지운다.
tmp2 = ""
for j in i:
if j in skill:
tmp2 += j
tmp.append(tmp2)
answer = 0
for i in tmp: # skill과 순서대로 비교하면서 문자가 서로 틀리면 break하고 다 맞으면 개수를 +1 해준다.
n = len(i)
for j in range(n):
if skill[j] != i[j]:
break
else:
answer += 1
return answer
문제를 많이 풀어 보는 수 밖에..