얼음녹차의 블로그
article thumbnail

문제 링크: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)

처음 이 코드를 보고는 상상도 못 한 방법에 감명을 받았다 ㅋㅋㅋ

이러한 방법을 찾는 자세가 개발자의 자세가 아닐까 생각한다.

profile

얼음녹차의 블로그

@PERIR

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!