문제설명
최대값이 주어진다 1부터 주어진 숫자까지중 홀수를 배열에 담아라
제한사항
입출력 예
말로하는 순서도
solution int형 함수 선언 및 매개변수 주어진 정수가 담길 int형 변수 n선언
answer이라는 계산값 및 최종 반환값을 저장할 변수 선언 malloc로 동적할당 int의 크기를 sizeof로 구한것에 곱하기 주어진 정수를 2로나눈값에 1를 더한값을 하여 할당한다
x라는 답 배열의 위치값으로 활용될 int형 변수 선언
for문 시작값 0 주어진 정수와 같거나 작을때 반복 변수 증가
if문 i나누기 2의 나머지가 0이 아니라면
answer의 x값을 증가시킨 위치의 i의 값을 넣는다
최종반환
소스코드
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int* solution(int n) {
// return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
int* answer = (int*)malloc(sizeof(int)*((n/2)+1));
int x=0;
for(int i=1; i<=n;i++)
if(i%2!=0)
{
answer[x++]=i;
}
return answer;
}
풀이
동적 할당 부분이 가장 어려웠다 배열의 선언이기도 했고 int형의 크기도 생각했어야 했다
위치값도 for문의 변수를 사용했다가 중간중간 이상한 값이 들어갔어서 따로 변수를 만들었다
0으로 초기화 하지 않으면 숫자가 이상함으로 초기화도 중요하다
출처: 프로그래머스 코딩테스트연습 입문문제, https://school.programmers.co.kr/learn/courses/30/lessons/120813
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
728x90