https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5QPsXKA2UDFAUq&categoryId=AV5QPsXKA2UDFAUq&categoryType=CODE&problemTitle=2063&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

N 개의 숫자중에 중간값을 출력하는 문제이다. ( 중간값 : 크기 순으로 배열했을 때 중앙에 위치하는 수)

 

 

 

파이썬에서 나누기 연산은 아래와 같다.

/ : 기본 나눗셈 (float형)

5/3=1.666666667

 

// : 몫

5//3=1

 

% : 나머지

5%3=2

 

divmod : 몫, 나머지 (결과값을 이용할 때는 2개의 변수가 필요하다.)

a,b=divmod(5,3)

a가 몫인 1, b가 나머지인 2가 된다.

 

 

 

1. 파이썬

n = int(input()) 
data = list(map(int, input().split()))
data.sort()
m = n // 2
print(data[m])

입력될 숫자 개수를 int로 변환해서 n으로 저장한다.

입력된 모든 숫자들을 split()으로 쪼개고 int로 변환한 뒤에 list로 각각 저장한다.

sort()로 오름차순 정렬한다.

내림차순 정렬 : sort(reverse=True) 

입력받은 숫자는 홀수라고 문제에 지정되어 있다.

0부터 list로 저장되는 것을 생각했을 때 개수에 나누기 2를 하면 중간의 데이터를 찾을 수 있다.

(ex. 입력된 데이터가 5개라면 data[2]가 중간값이다.)

 

 

 

2. 자바

import java.util.Arrays; 
import java.util.Scanner; 
public class Solution { 
    public static void main(String[] args) { 
        Scanner sc=new Scanner(System.in); 
        int n=sc.nextInt();                                                                                                                     
        int[] num=new int[n]; 
        for(int i=0;i<n;i+=1) { 
            num[i]=sc.nextInt(); } 
        Arrays.sort(num); 
        System.out.println(num[n/2]); 
    } }

입력받은 숫자들을 배열에 넣어주고, Arrays.sort를 이용해서 오름차순 정렬한다.

내림차순 정렬 : Arrays.sort(배열이름, Collections.reverseOrder());

n/2번째 값을 출력한다.