본문 바로가기
프로그래머스/프로그래머스 Lv0

Lv0 문자열 밀기

by 독기품기 2024. 7. 26.

https://school.programmers.co.kr/learn/courses/30/lessons/120921

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

이 문제는 2가지 방식으로 풀 수 있는데 먼저 for문과 if문을 이용해서 풀게 되면

for i in range(len(A)):를 통해 A의 길이만큼 반복하게 해야하는데 그 이유는 A의 길이만큼 반복해서 오른쪽으로 옮길 때 최대 A의 길이 번을 옮기면 기존의 A와 같아지기 때문이다.

if A == B 라면 0을 반환하라 했기에 바로 return answer를 해주고 다르다면 A의 맨끝 문자를 가장 앞으로 오게하고 나머지 문자들을 그 뒤에 붙여야 하므로 A = A[-1] + A[:-1]를 해주고 answer += 1를 해줘 1번 시행했음을 알리고 A와 B가 같아질 때까지 A의 길이만큼 반복하다 같지 않다면 -1를 return 해주면 된다.

다른 방법으로는 자료구조에서 설명한 deque을 이용한 방법이다.

먼저 deque를 사용하기위해 from collections import deque를 선언해주고 A,B를 deque로 변환해주어야 하기에

a,b = deque(A), deque(B)를 해준다. 그 후 for반복문을 통해 A의 길이만큼 반복해주는데 이 때 a와 b가 같다면 return i를 아니라면 a.rotate(1)를 이용해 a를 오른쪽으로 1칸 밀어준다. 이를 A의 길이만큼 반복해도 같지 않다면 return -1를 해준다.

'프로그래머스 > 프로그래머스 Lv0' 카테고리의 다른 글

Lv0 문자열 출력  (0) 2024.07.27
[PCCE 기출문제] 6번 / 가채점  (0) 2024.07.26
Lv0 특이한 정렬  (0) 2024.07.25
Lv0 유한소수 판별하기  (0) 2024.07.25
Lv0 저주의 숫자 3  (2) 2024.07.24