728x90
아고,,, 이코테 너무 오랜만에 오네,,,
맨날 코테 공부를 하긴 했는데 스터디하느라 바빠서ㅠㅠ
그래서 프로그래머스 1개 풀자마자 달려왔으니까 너무 속상해하지마 이코테~~(아님)
문제 설명
하나의 수열에는 다양한 수가 존재한다
이러한 수는 크기에 상관없이 나열되어 있다
이 수를 큰 수부터 작은 수의 순서로 정렬해야 한다
수열을 내림차순으로 정렬하는 프로그램을 만드시오
입력 조건
- 첫째 줄에 수열에 속해 있는 수의 개수 N이 주어진다 (1<=N<=500)
- 둘째 줄부터 N+1번째 줄까지 N개의 수가 입력된다
- 수의 범위는 1 이상 100,000 이하의 자연수이다
출력 조건
- 입력으로 주어진 수열이 내림차순으로 정렬된 결과를 공백으로 구분하여 출력한다
- 동일한 수의 순서는 자유롭게 출력하여도 괜찮다
입력 예시
3
15
27
12
출력 예시
27 15 12
문제 풀이)
이 문제는 가장 기본적인 정렬을 할 수 있는지를 물어보는 문제이다
수의 개수가 500개 이하로 매우 적으며, 1이상 100,000이하이므로 어떠한 정렬 알고리즘을 사용해도 문제 해결이 가능하다!
이전에 공부한 선택 정렬, 삽입 정렬, 퀵 정렬, 계수 정렬 중 아무거나 이용해도 상관없지만 파이썬의 경우 가장 코드가 간결한 기본 정렬 라이브러리를 사용하면 된다
파이썬 코드)
# N을 입력받기
n = int(input())
# N개의 정수를 입력받아 리스트에 저장
array = []
for i in range(n):
array.append(int(input()))
# 파이썬 기본 정렬 라이브러리를 이용하여 정렬 수행
array = sorted(array, reverse=True)
# 정렬이 수행된 결과를 출력
for i in array:
print(i, end=' ')
reverse = True 를 사용해서 내림차순 정렬
여기서 그냥 print(array) 했는데 이는 출력 조건에 맞지 않아서 반복문으로 다시 출력함!
C++ 코드)
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(int a, int b)
{
return a > b;
}
int main()
{
int n;
vector<int> v;
cin>>n;
for(int i=0;i<n;i++)
{
int temp;
cin>>temp;
v.push_back(temp);
}
sort(v.begin(), v.end(), compare);
for(int i=0;i<n;i++)
{
cout<<v[i]<<" ";
}
return 0;
}
짠 C++에서는 vector를 이용해서 구현했어
#include <algorithm> 헤더파일에 있는 sort 함수랑 compare 함수 사용해서 내림차순 정렬함!
여기서 compare는 정렬 기준이야!
sort 함수 정렬 기준 바꾸는 건 아래 블로그 참고하기!
https://foxtrotin.tistory.com/93
짱쉬운 문제였다
그럼 빠잉!
728x90
'코딩테스트 > 이코테' 카테고리의 다른 글
[CH6 정렬] 기준에 따라 데이터를 정렬 (6) (0) | 2022.01.03 |
---|---|
[CH6 정렬] 기준에 따라 데이터를 정렬 (5) (0) | 2022.01.03 |
[CH6 정렬] 기준에 따라 데이터를 정렬 (4) (0) | 2021.12.31 |
[CH6 정렬] 기준에 따라 데이터를 정렬 (3) (0) | 2021.12.30 |
[CH6 정렬] 기준에 따라 데이터를 정렬 (2) (0) | 2021.12.29 |
댓글