문제설명
주어지는 두개의 숫자를 하나를 시작값 다른하나를 끝값으로 하여 해당 범위 안에 있는 배열만을 반환 하라
제한사항
입출력 예
말로하는 순서도
solution 함수 선언 및 매개변수 배열 numbers, 배열길이값 numbers_len, 정수 num1, 정수 num2 선언 및 반환형 int
answer이라는 계산값 및 최종 반환값을 저장할 변수 선언 및 초기화(sizeof로 int형의 바이트를 구하고 num2에서 num1을빼고 1을 더하여 곱하여 용량을 할당한다
answer의 위치변수로 사용할 x를 선언 0으로 초기화
for문 변수 i의 값을 num1값으로 함 i가 num2보다 작을때 반복 변수 증가
answer의 x위치에 numbers의 for문 변수위치의 값을 넣음
x값 증가
최종 반환
소스코드
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// numbers_len은 배열 numbers의 길이입니다.
/*malloc()안에들어갈 값이 크기값인데 사이즈오프로 int answer의 값을 입럭
원하는 길이는 넘2에서 넘1을 뺀값에 시작이기에 1추가의 값으로 사이즈오프를 거쳐서 malloc의 값으로 들어감
*/
int* solution(int numbers[], size_t numbers_len, int num1, int num2) {
// return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
int* answer = (int*)malloc(sizeof(int)*(num2-num1)+1);
int x=0;
for (int i =num1; i<=num2; i++)
{
answer[x]=numbers[i];
x++;
}
return answer;
}
풀이
메모리 할당 부분은 뺀값에서 1을 더해야만 개수가 맞다
그리고 for문의 시작값은 num1로 하고 범위를 num2로 하여 차례대로 값을 넣는다
출처: 프로그래머스 코딩테스트연습 입문문제, https://school.programmers.co.kr/learn/courses/30/lessons/120833
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
728x90