-풀이
def solution(skill, skill_trees):
#가능한 스킬트리 개수 세기
answer = 0
for i in skill_trees:
#i에 skill과 같은 알파벳이 있으면 넣으려고 만든 ans변수
ans = ''
#skill_trees인덱스마다 있는 알파벳을 j에 하나씩 가져오기
for j in i:
#skill에 있는 알파벳이 j에 있으면 ans에 j넣기
if j in skill:
ans += j
#ans변수가 skill에 있는 순서와 길이가 맞으면 answer에 1 더하기
if ans == skill[0:len(ans)]:
answer += 1
return answer
-풀이 설명(느낀 점)
[30분 no sol] 원리는 어느정도 이해가 갔는데 반복문만 계속 중첩하고 == 기호로 같은 알파벳을 찾으려고 했는데 substring 오류가 뜨는 등 실행이 잘 되지 않았다. 그래서 결국 다른사람의 풀이를 보게 되었다. 여기서 내가 잘 안 쓰던 방법이 꽤 나와서 틀린 것 같다. 그 부분은 두 가지다.
1.skill_trees를 반복문 i로 돌리고 그 i를 바로 다시 반복문을 돌려서 skill_trees인덱스마다 알파벳 한개씩 바로 가져오게하는 것
2.if A in B를 사용해서 같은 알파벳을 비교해서 찾아주는 것
풀이를 보고나면 쉽고 이해하겠지만, 문제를 막상 풀 때는 이리저리 반복문만 여러 번 돌려본 것 같다는 생각이 든다. 이 두 가지 방법을 잘 활용하면 코드가 훨씬 짧아지고 간편할 수 있다는 것을 숙지하고 실전에서 활용해야겠다.
'알고리즘' 카테고리의 다른 글
[프로그래머스][level 2] 쿼드 압축 후 개수 세기 (0) | 2021.10.25 |
---|---|
[구현] 백준 1076(저항) 브론즈2 (0) | 2021.10.25 |
[구현] 백준 1032(명령 프롬프트) 브론즈1 (0) | 2021.10.23 |
[구현] 백준 1009(분산처리) 브론즈3 (0) | 2021.10.23 |
[정렬] 백준 11004(K번째 수) 실버5 (0) | 2021.10.23 |