728x90
📚문제
📝풀이
# 1. 문자열 슬라이싱
def solution(A,B):
for i in range(len(A)):
if A==B:
return i
else:
# 문자열은 리스트와 달리 수정불가능한(immutable) 구조이기 때문에 A에 재할당
A = A[-1] + A[:-1]
return -1 # 한 바퀴 다돌아도 return문 만족하지 못한다면 -1 반환
첫번째 풀이는 문자열을 슬라이싱하여 푸는 방법
# 2. 리스트의 insert,pop 함수
def solution(A,B):
A, B = list(A), list(B)
for i in range(len(A)):
if A==B:
return i
else:
A.insert(0,A.pop())
두 번째 풀이는 리스트 형태로 만든 후 insert, pop 함수 사용
- A.pop()은 마지막인덱스 삭제되며 그 값 반환
- inser(0)하게 되면 0번 인덱스 자리에 반환된 값 insert
# 3. deque
from collections import deque
def solution(A,B):
A,B = deque(A), deque(B)
for i in range(len(A)):
if A==B:
return cnt
else:
A.rotate()
return -1
세 번째 풀이는 deque를 이용한 풀이
앞과 뒤 양쪽에서 데이터를 처리할 수 있는 양방향 자료형이며,
스택(stack)이나 큐(queue)처럼 사용 가능
# 4. find 함수
def solution(A,B):
BB = B*2
return BB.find(A)
네 번째 풀이는 find 함수를 이용한 방법
이것도 기발한 풀이인 것 같다
A가 'hello'일 때 B가 'lohel'이라면 BB(B*2)는 'lohellohel'이다
이 때, BB.find(A)를 실행하면
'hello'가 시작되는 인덱스인 2가 반환된다
그리고 find함수 특성상 찾지 못한다면 -1을 return 하기 때문에 문제의 조건과 맞는다
풀이 참고 출처 : https://codest.tistory.com/25
728x90
'Python(알고리즘,문제풀이) > 프로그래머스(입문100제)' 카테고리의 다른 글
코딩테스트입문 / 연속된 수의 합 (0) | 2023.08.09 |
---|---|
코딩테스트 입문 / 이진수 더하기 (int, bin) (0) | 2023.08.08 |
코딩테스트입문 / 치킨 쿠폰 (0) | 2023.08.08 |
코딩테스트입문 / 로그인 성공? (0) | 2023.08.07 |
코딩테스트입문 / 옹알이(1) (permutations함수) (0) | 2023.08.07 |