티스토리 뷰
문제 설명
문자열 "hello"에서 각 문자를 오른쪽으로 한 칸씩 밀고 마지막 문자는 맨 앞으로 이동시키면 "ohell"이 됩니다. 이것을 문자열을 민다고 정의한다면 문자열 A와 B가 매개변수로 주어질 때, A를 밀어서 B가 될 수 있다면 몇 번 밀어야 하는지 횟수를 return하고 밀어서 B가 될 수 없으면 -1을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 0 < A의 길이 = B의 길이 < 100
- A, B는 알파벳 소문자로 이루어져 있습니다.
입출력 예
A : B : result
"hello" | "ohell" | 1 |
"apple" | "elppa" | -1 |
* 첫 번째 생각
def solution(A, B):
answer = 0
shift = 0
for j in range(len(B)):
if A[0] == B[j]:
shift = j
for i in range(len(A)):
if A[i] != B[(shift+i)%len(A)]:
answer = -1
return answer
return shift
한 놈만 찾자, 그 놈을 Shift한 횟수로 생각...
정확성 테스트
테스트 1 〉 | 실패 (0.00ms, 10.1MB) |
테스트 2 〉 | 통과 (0.01ms, 10.1MB) |
테스트 3 〉 | 실패 (0.01ms, 10.1MB) |
테스트 4 〉 | 실패 (0.01ms, 10.1MB) |
테스트 5 〉 | 통과 (0.00ms, 10MB) |
테스트 6 〉 | 통과 (0.00ms, 10.1MB) |
테스트 7 〉 | 통과 (0.01ms, 10.1MB) |
채점 결과
정확성: 57.1
합계: 57.1 / 100.0
중복된 알파벳이 있을 수 있다는 생각을 하지 않았음
* 두 번째 생각
def solution(A, B):
answer = -1
shift = 0
for i in range(len(A)):
for j in range(len(B)):
if A[i] == B[j]:
shift = j - i
count = 0
for k in range(len(A)):
if A[k] == B[(shift+k)%len(A)]:
count += 1
else:
break
if count == len(A):
return shift
return answer
A문자열의 알파벳 하나하나를 B문자열 글자와 비교 - 중복 for문
A의 i번째 알파벳이 B의 j번째 알파벳과 같으면, 일단 그 값을 shift 값으로 저장하고 검증을 시작
shift만큼 밀어낸 알파벳이 모두 일치하면(count == len(A)), shift로 저장한 숫자가 정답이 맞고,
알파벳이 하나라도 일치하지 않으면 break하고 B문자열의 다음 알파벳을 비교함.
실행 결과
같은 코드로 채점한 결과가 있습니다.
정확성 테스트
테스트 1 〉 | 통과 (0.01ms, 10.1MB) |
테스트 2 〉 | 통과 (0.01ms, 10.2MB) |
테스트 3 〉 | 통과 (0.01ms, 10.3MB) |
테스트 4 〉 | 통과 (0.01ms, 10.1MB) |
테스트 5 〉 | 통과 (0.01ms, 10.1MB) |
테스트 6 〉 | 통과 (0.04ms, 10.2MB) |
테스트 7 〉 | 통과 (0.01ms, 10.3MB) |
* 세 번째 생각
- 문자열 처리에 대해 좀 찾아 본 후...
def solution(A, B):
answer = 0
for i in range(len(A)):
if A == B:
return answer
else:
answer += 1
A = A[-1] + A[:-1]
return -1
A의 맨 오른쪽 [-1] 문자 + A의 맨 왼쪽부터 마지막 전까지의 문자. >>> 실제로 문자 밀기를 해가면서 비교
'Test > Python(20220101~)' 카테고리의 다른 글
프로그래머스.L0.잘라서배열로저장하기 (1) | 2022.10.08 |
---|---|
문자열 처리 참고 (0) | 2022.10.07 |
프로그래머스.L0.연속된 수의 합 (0) | 2022.10.04 |
프로그래머스.L0.다음에올숫자 (0) | 2022.10.03 |
프로그래머스.L0.옹알이 (0) | 2022.10.02 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- dp-1
- fromkeys
- insert
- exadata
- 읽어오기
- vmware.powercli
- Join
- 차집합
- 부동없이
- sysprep
- 변수화
- 대소문자
- EXA
- powercli
- 중복제거
- dezoomify
- powershell
- cloud-init
- oracle
- artandculture
- 3par
- dp-2
- storage
- set()
- 정렬
- vmware
- 배열
- 스토리지
- LIST
- virt-sysprep
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
31 |
글 보관함