병훈's Blog

SWEA - 2063. 중간값 찾기 (Python, Java, C++) 본문

Algorithm

SWEA - 2063. 중간값 찾기 (Python, Java, C++)

thdqudgns 2022. 12. 30. 02:07

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5QPsXKA2UDFAUq 

 

SW Expert Academy

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

swexpertacademy.com

 

[입력]

입력은 첫 줄에 N 이 주어진다.

둘째 줄에 N 개의 점수가 주어진다.


[출력]

N 개의 점수들 중, 중간값에 해당하는 점수를 정답으로 출력한다.

 


갓 C++

 


 

<Python>

N = int(input())
a = list(map(int, input().split()))
a.sort()
print(a[N/2])

하지만 코드길이는 Python이 갓.

파이썬에서는 배열을 입력받고 저장하는 것도 간단하다.

 

  • a = list(map(int, input().split())) 를 사용하면 공백을 기준으로 입력되는 정수들을 바로 list로 저장할 수 있다.
  • a.sort() 를 사용하면 바로 오름차순으로 정렬된다.
  • list에 저장된 값을 가져오려면 a[index] 식으로 적으면 된다. [ ] 안에는 수식이 들어가도 된다.

 

<JAVA>

import java.util.*;
  
class Solution
{
    public static void main(String args[]) throws Exception
    {
          
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int index = N/2;
        //sc.nextLine();
          
        ArrayList<Integer> a = new ArrayList();
          
        for (int i = N; N>0; N--) {
            int tmp = sc.nextInt();
            a.add(tmp);
        }
          
        Collections.sort(a);
          
        // N/2 로 하면 안나오고, index에 N/2를 저장하고 출력해야만 제대로 출력된다.
        // int 데이터 타입으로 확실하게 정해줘야 하나보다.
        System.out.println(a.get(index));
          
    }
}

 

  • 배열공간을 확보하기 위해 ArrayList를 사용했고, 지네릭스<>로 자료형을 정수형으로 제한하여 생성했다.
  • JAVA에서는 배열에 값을 넣기 위해 반복문(for)을 사용하는 것이 일반적이다. 파이썬처럼 한 번에 입력할 수 없다.
  • 배열에 값을 추가할 때는 add() 메서드를 사용한다.
  • 배열을 정렬할 때는 java.util 패키지의 Collections 클래스를 사용하여 sort()로 오름차순으로 정렬한다.
  • 배열의 값을 가져올 때는 단순이 인덱스를 적는 것이 아니라 get()을 사용하여 ()안에 index를 적어 값을 가져온다.

 

<C++>

#include<iostream>
#include<algorithm>
  
using namespace std;
  
int main(int argc, char** argv)
{
    int N;
    cin >> N;
      
    int score[N];
      
    for(int i=0; i < N; i++){
        cin >> score[i];  // 배열을 위에서 선언하고, for문에서 하나씩 넣어줄 수 있다.
    }
      
    // C++에서 정렬을 하기 위해서는 # include<algorithm> 를 선언해주어야 한다.
    sort(score, score+N);
      
    cout << score[N/2];
      
    return 0;//정상종료시 반드시 0을 리턴해야합니다.
}

 

  • C++에서 배열 생성은, 변수명 옆에 [N]으로 배열의 길이를 적어주면 된다. (그 외의 방법도 많다.)
  • JAVA와 마찬가지로 반복문을 이용하여 입력을 받은 값을 배열에 저장하는데,
    배열을 선언할 당시 배열의 길이를 제시했으므로 index를 활용하여 0 ~ (N-1) 까지
    i를 증가시키며 각각의 배열 내 공간 score[i] 에 값을 입력받아 저장할 수 있다.
  • C++ 에서 배열의 정렬을 하기 위해서는 <algorithm> 헤더를 추가하여  sort()를 사용하면 된다.
    sort()의 () 안에는 시작과 끝의 정보를 적어주는 것이다.

 

728x90
728x90