문제 링크:https://school.programmers.co.kr/learn/courses/30/lessons/120921
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
처음 작성한 코드
- 경우의 수를 체크해 보기 위해 문자열 A의 길이만큼 반복문 시행
- i 만큼의 A문자열 뒤에 있는 문자열을 잘라 앞으로 붙이고 문자열 B와 비교한다.
- 비교문이 참이면 i만큼 문자열을 밀었다는 것으로 변수 i의 값을 반환한다.
- 모든 경우에서 비교문이 참이지 않으면 -1을 반환하게 된다.
def solution(A, B):
for i in range(len(A)):
if B == A[-i:] + A[:-i]:
return i
return -1
# 입출력 예시
print(solution("hello", "ohell"))
print(solution("apple", "elppa"))
print(solution("atat", "tata"))
print(solution("abc", "abc"))
다른 코드
[코드1]
- 문자열 B를 이어 붙여서 A와 일치하는 문자열의 위치를 찾는 방법이다.
- 일치하는 문자열이 있다면 몇 번째인지 값을 반환
- 일치하는 문자열이 없다면 -1을 반환
def solution(A, B):
return (B*2).find(A)
처음 이 코드를 보고는 상상도 못 한 방법에 감명을 받았다 ㅋㅋㅋ
이러한 방법을 찾는 자세가 개발자의 자세가 아닐까 생각한다.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[Programmers][Python] 2차원으로 만들기 (2) | 2023.03.01 |
---|---|
[Programmers][Python] 대충 만든 자판 (0) | 2023.02.27 |
[Programmers][Python] 잘라서 배열로 저장하기 (0) | 2023.02.25 |
[Programmers][Python] 진료순서 정하기 (0) | 2023.02.23 |
[Programmers][Python] K의 개수 (0) | 2023.02.22 |