정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요.
C언어
입력되는 문자열이 right인지 left인지 strcmp를 사용하여 조건에 부합한지 확인한다.
만약 right가 문자열에 포함되어 있다면 오른쪽으로 배열을 회전시킨다.
회전이라는 것이 원판 돌리듯이 되면 좋을텐데..ㅋㅋ 그렇지 않다는 것!....... 순서만 조금 바꾸면 된다.

numbers에서 맨 마지막 값을 맨 처음으로 정렬하고 그 뒤는 for문으로 그대로 정렬하면 된다.
answer[0]번에 값을 먼저 넣는 것이 중요 !
만약 left가 문자열에 포함되어 있다면 왼쪽으로 배열을 회전시킨다.
오른쪽으로 회전하는 것과 반대로 왼쪽으로 회전할 때에는 첫 번째, 즉 numbers[0]번 값을 맨 뒤인 answer[총길이-1]에 넣어준다. answer[0]번부터는 그대로 정렬하면 된다.
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// numbers_len은 배열 numbers의 길이입니다.
// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
int* solution(int numbers[], size_t numbers_len, const char* direction) {
// return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
int* answer = (int*)malloc(numbers_len*sizeof(int));
if (strcmp(direction, "right") == 0) {
answer[0] = numbers[numbers_len - 1];
for (int i = 1; i < numbers_len; i++) {
answer[i] = numbers[i - 1];
}
} else if (strcmp(direction, "left") == 0) {
for (int i = 0; i < numbers_len - 1; i++) {
answer[i] = numbers[i + 1];
}
answer[numbers_len - 1] = numbers[0];
}
return answer;
}
파이썬
파이썬에서는 배열에 값을 추가할때 append로 간단히 할 수 있다는 점!
def solution(numbers, direction):
answer = []
n = len(numbers)
if direction == "right":
answer.append(numbers[n-1])
for i in range(1, n):
answer.append(numbers[i-1])
else:
for i in range(1, n):
answer.append(numbers[i])
answer.append(numbers[0])
return answer
'Coding Test' 카테고리의 다른 글
| 약수 구하기 (0) | 2024.08.02 |
|---|---|
| 369게임 (0) | 2024.08.01 |
| 제곱수 판별하기 (0) | 2024.07.30 |
| 문자열 정렬하기 (1) (0) | 2024.07.29 |
| 자릿수 더하기 (0) | 2024.07.24 |