500error
[Cos Pro 1급, Python] 3차 1번 : 배열을 회전시켜보세요 본문
반응형
문제
정수로 이루어진 두 배열 arrA와 arrB가 주어질 때, arrA를 회전해 arrB로 만들 수 있는지 알아보려 합니다. 배열의 회전이란 모든 원소를 오른쪽으로 한 칸씩 이동시키고, 마지막 원소는 배열의 맨 앞에 넣는 것을 말합니다.
![](https://blog.kakaocdn.net/dn/ckGAJh/btsFpSm4voy/9baJhfdlDi1oYUc9xpEguK/img.png)
이를 위해 다음과 같이 프로그램 구조를 작성했습니다.
1. arrA와 arrB의 길이가 다르면 false를 return 합니다.
2. 두 배열의 구성 성분이 달라 회전했을 때 같아질 가능성이 없다면 false를 return 합니다.
3. arrA 배열을 두 번 이어 붙여 길이가 2배인 배열로 만듭니다.
4. arrA의 부분 배열 중 arrB와 같은 배열이 있으면 true를, 그렇지 않으면 false를 return 합니다.
배열 arrA와 arrA의 길이 arrA_len, 배열 arrB와 arrB의 길이 arrB_len이 매개변수로 주어질 때, arrA를 회전해 arrB로 만들 수 있으면 true를, 그렇지 않으면 false를 return 하도록 solution 함수를 작성하려 합니다. 위 구조를 참고하여 코드가 올바르게 동작할 수 있도록 빈칸에 주어진 func_a, func_b, func_c 함수와 매개변수를 알맞게 채워주세요.
코드
def func_a(arr):
ret = arr + arr
return ret
def func_b(first, second):
MAX_NUMBER = 1001
counter = [0 for _ in range(MAX_NUMBER)]
for f, s in zip(first, second):
counter[f] += 1
counter[s] -= 1
for c in counter:
if c != 0:
return False
return True
def func_c(first, second):
length = len(second)
for i in range(length):
if first[i : i + length] == second:
return True
return False
arrA1 = [1, 2, 3, 4]
arrB1 = [3, 4, 1, 2]
ret1 = solution(arrA1, arrB1)
print("solution 함수의 반환 값은", ret1, "입니다.")
arrA2 = [1, 2, 3, 4]
arrB2 = [1, 4, 2, 3]
ret2 = solution(arrA2, arrB2)
print("solution 함수의 반환 값은", ret2, "입니다.")
반응형
'알고리즘 > 파이썬' 카테고리의 다른 글
[Cos Pro 1급, Python] 3차 4번 : 중복 문자열 이어붙이기 (0) | 2024.02.28 |
---|---|
[Cos Pro 1급, Python] 3차 2번 : 팰린드롬 문제 (1) | 2024.02.28 |
[Cos Pro 1급, Python] 2차 10번 : 0들을 0으로 만들기 (0) | 2024.02.28 |
[Cos Pro 1급, Python] 2차 9번 : 비밀번호 검사 (0) | 2024.02.28 |
[Cos Pro 1급, Python] 2차 8번 : 규칙에 맞는 배열 구하기 (0) | 2024.02.28 |
Comments