티스토리 뷰
반응형
문제
programmers.co.kr/learn/courses/30/lessons/49993
문제 상황
- 입력받은 문자열은 중복되지 않는 대문자 알파벳이며, 이 알파벳은 반드시 순서를 지켜야한다. skill_trees에서 가능한 스킬트리의 개수를 출력한다.
해결 전략
- 기본적으로 후보군을 순회하며 스킬트리에 있는 스킬인지 확인한다. 스킬트리에 없는 것이라면 넘어가고, 스킬트리에 있는 것이면 첫번째 요소와 비교하여 첫번째 요소와 다르면 후보에서 탈락된다. 만약 첫번째 요소와 같으면 그 요소를 삭제하고 다음으로 넘어간다. 모두 통과하면 정답 수를 하나 늘린다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
from collections import deque
def solution(skill: str, skill_trees: list) -> int:
possible_skill = 0
for test_case in skill_trees:
# test_case를 순회하며 skill에 있지만 첫번째 요소와 다르면 false, 같으면 뺀다.
skill_deque = deque(list(skill))
for one_skill in test_case:
if one_skill in skill_deque:
if skill_deque[0] != one_skill: break
skill_deque.popleft()
else:
possible_skill += 1
return possible_skill
|
cs |
해설
- 조건을 세분화할 필요가 있다. 직접 요소를 편집할 필요가 있는 것은 skill 뿐이고, skill 자체는 변하면 안되므로 deque로 변환한다. pop(0)은 shifting으로 속도가 느리므로 popleft를 쓰기 위해 deque를 활용했다.
새로 학습한 것 & 실수
- if-else 뿐만 아니라 파이썬에서는 for-else가 가능하다. for문과 같은 레벨에서 else가 있다면 break가 없을 때에만 else가 작동한다. Java의 경우 isCheck 등의 변수로 for문을 체크했지만 파이썬에서는 for-else로 가능하다.
반응형
'알고리즘 학습 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 다트 게임 (2018 KAKAO BLIND RECRUITMENT) [Python] (0) | 2021.01.10 |
---|---|
프로그래머스 - 이진 변환 반복하기 (월간 코드 챌린지 시즌1) [Python] (0) | 2021.01.08 |
프로그래머스 - 멀쩡한 사각형 (Summer/Winter Coding(2019)) [Python] (0) | 2021.01.07 |
프로그래머스 - 자물쇠와 열쇠 [Python] (0) | 2020.09.12 |
프로그래머스 - 괄호 변환 [Python] (0) | 2020.09.11 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 백준 알고리즘#BackTracking
- 암호코드#dp#BOJ#Python
- API#lazy#
- PassingCars#Codility#Python
- 파이썬알고리즘인터뷰#4장
- 반복수열#백준알고리즘#Python
- 섬의개수#백준알고리즘#Python
- 미로 탐색#백준알고리즘#Python
- 병든 나이트#BOJ#탐욕법#Python
- filter#isalnum#lower
- 날짜 계산#BOJ#완전탐색#Python
- 리모컨#완전탐색#BOJ#Python
- 나무자르기#BOJ#이분탐색#Python
- django#slicing
- Brackets#Stacks and Queues#Codility#Python
- Swift#Tuples#Range
- Distinct#Codility#Python
- Triangle#Sorting#Codility#Python
- N으로 표현#DP#Programmers#Python
- NumberofDiscIntersections#Codility#Sort#Python
- 텀 프로젝트#백준알고리즘#Python
- 토마토#백준알고리즘#Python
- 쿼드트리#BOJ#분할정복#Python
- django
- 배열합치기#분할정복#BOJ#Python
- 공유기 설치#BOJ#이분탐색#Python
- 순열사이클#BOJ#Python
- 터틀비치#리콘#xbox#controller
- 랜선자르기#이분탐색#BOJ#Python
- 종이자르기#분할정복#BOJ#Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함