프로그래머스 문자열밀기

이로운·2023년 6월 9일
0

파이썬

목록 보기
9/9

문제

접근

  1. 민다는거는 순환 한다는 것과 같다.
  2. 얼만큼 한칸씩 돌았는지 알아야함

배경지식

deque

Python의 데이터 구조로 양쪽 끝에서 요소를 효율적으로 삽입하고 삭제할 수 있습니다. 스택과 큐의 조합으로 생각할 수 있습니다.
스택과 큐를 한번에!!

사용법

from collections import deque

1. 요소 추가

  • 오른쪽 끝에 요소 추가는 append
  • 왼쪽 끝에 요소를 추가 할 때는 appendleft
my_deque.append(10)
my_deque.appendleft(5)

2. 요소 제거

  • 가장 오른쪽 요소 제거 및 반환: pop()
  • 맨 왼쪽 요소 제거 및 반환: popleft()
rightmost_element = my_deque.pop()
leftmost_element = my_deque.popleft()

3. 회전시키기

  • 오른쪽으로 회전 : rotate(양수숫자)
  • 왼쪽으로 회전 : rotate(음수숫자)
my_deque.rotate(1)  # Rotates the deque to the right by 1 position
my_deque.rotate(-1)  # Rotates the deque to the left by 1 position

풀이

from collections import deque


def solution(A, B):
    Alist = deque(A)
    Blist = deque(B)

    for i in range(len(Alist)):
        if Alist == Blist:
            return i
        Alist.rotate(1)
    return -1
  1. A와 B를 데크로 만든다
  2. Alist의 길이만큼 반복문을 돌린다
  3. 만약 Alist와 Blist가 같으면 i(옮긴 횟수)를 리턴
  4. 같지 않다면 오른쪽으로 한칸 이동
    => 즉 A == B 일때 까지 순환시킴
  5. 만약 순환시켰는데 일치하지 않는다면 -1 반환
profile
이름 값 하는 개발자가 꿈인 사람

0개의 댓글