문제설명
주어진 값들중 중간값을 반환 하는것이다
제한사항
입출력 예
말로하는 순서도
solution 함수 선언 및 매개변수 주어진 정수가 담길 배열 변수 int형 array 배열의길이를 담을 변수 slze_t형 array_len 반환형 int
answer이라는 계산값 및 최종 반환값을 저장할 변수 선언
flag 라는 오름차순 정렬에 사용할 변수 선언
for문 배열의 길이만큼 반복 변수증가(y)
for문 배열의 길이만큼 반복 변수증가(x)
if문 number의y위치의 값 보다 number의x위치의 값이 더 크다면
flag에 number의y 위치의 값을 넣는다
number의y 에 number의x 위치의 값을 넣는다
number의x 에 flag의 값을 넣는다
answer에 array의 array_len을 2로 나눈값의 위치의 값을 넣는다
최종반환
소스코드
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// array_len은 배열 array의 길이입니다.
int solution(int array[], size_t array_len) {
int answer = 0;
int flag;
for(int y=0; y<array_len; y++)
{
for(int x=0;x<array_len;x++)
if(array[y]<array[x])
{
flag=array[y];
array[y]=array[x];
array[x]=flag;
}
}
answer=array[array_len/2];
return answer;
}
풀이
나는 처음 중앙값이라 하여 배열의 가운데에 있는 값을 보내는줄 알았는데 아니었다
오름차순이 싫다면 내림 차순을 해도 좋지만 나는 오름 차순으로 진행했다(해당 알고리즘에 대해 자세한 설명은 최댓값만들기 글에 있다)
2로 나눠도 가운데 값위치가 될수 있는것은 조건에 홀수만 있다고 나오기도 하고 배열은 0부터 시작이기 때문이다
출처: 프로그래머스 코딩테스트연습 입문문제, https://school.programmers.co.kr/learn/courses/30/lessons/120811
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr