티스토리 뷰
문제
주어진 배열의 순서를 뒤집으려고 합니다.
예를 들어 주어진 배열이 [1,4,2,3]이면, 순서를 뒤집은 배열은 [3,2,4,1]입니다.
정수가 들어있는 배열 arr와 arr의 길이 arr_len이 매개변수로 주어졌을 때, arr를 뒤집어서 return하도록 solution함수를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요.
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int* solution(int arr[], int arr_len) {
int left = 0;
int right = arr_len - 1;
while (left < (arr_len / 2)) { //빈칸
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left += 1;
right -= 1;
}
return arr;
}
int main() {
int arr[4] = { 1, 4, 2, 3 };
int arr_len = 4;
int* ret = solution(arr, arr_len);
printf("solution 함수의 반환 값은 {");
for (int i = 0; i < 4; i++) {
if (i != 0) printf(", ");
printf("%d", ret[i]);
}
printf("} 입니다.\n");
}
예시
arr | arr_len | return |
[1,4,2,3] | 4 | [3,2,4,1] |
코드설명
단계 | 과정 |
main | arr과 arr의 길이 arr_len값을 설정한 후, solution함수를 호출한다. |
solution | 배열의 인덱스 역할을 할 변수 left와 right를 선언한다. 이때 left는 0, right는 arr_len-1(배열의 인덱스)로 초기화한다. |
solution - while | temp변수를 선언하여 arr[left]값을 넣고, arr[left]에는 arr[right]를, arr[right]에는 temp를 넣어 배열 양쪽의 값들을 서로 바꿔주는 방식을 사용한다. (예를 들어 arr[0]는 arr[3]과, arr[1]는 arr[2]와 바꾸어 reverse를 진행한다.) while문을 통해 계속해서 값을 교환하는데, 이때 left는 right보다 클 수 없다. 따라서 while의 조건에 (left<right)조건을 넣어 제한된 범위 내에서만 교환이 되도록 한다. +)나는 left < (arr_len / 2)를 사용하여 left가 arr배열의 길이의 절반을 넘지 않도록 풀었지만, (arr_len / 2)를 right로 바꾸어서 풀었을 때와 조건은 같다고 볼 수 있다. |
solution / main | 모든 계산이 끝나고 solution에서 arr를 반환하여 main에서 출력이 진행되고, 프로그램이 종료된다. |
'[코테] > [GroomEdu]' 카테고리의 다른 글
[COS PRO 2급] 8번_펠린드롬 확인하기 (C/C++) (0) | 2021.05.06 |
---|---|
[COS PRO 2급] 7번_영어 수강 대상자 수 구하기 (C/C++) (0) | 2021.05.06 |
[COS PRO 2급] 6번_369게임 박수의 개수는? (C/C++) (1) | 2021.05.05 |
[COS PRO 2급] 4번_등장하는 가장 많은 수와 적은수 구하기 (C/C++) (0) | 2021.05.03 |
[COS PRO 2급] 3번_시작 날짜와 끝 날짜의 사이 구하기 (C/C++) (0) | 2021.05.03 |
댓글
공지사항
최근에 올라온 글
TAG
- 코스프로
- 자바
- YBM
- Cos Pro
- 구름에듀 기출문제
- lv2
- c언어 기출문제
- cospro기출문제
- C
- COSPRO 2급
- 연습문제
- C++
- 코딩테스트
- 구름에듀
- 기출문제
- groomedu
- 배열
- 구름 기출문제
- lv1
- YBM기출
- 알고리즘
- CosPro
- cospro기출
- Java
- programmers
- groom
- c언어
- 프로그래머스
- 1급
- 배열활용문제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함