평부 2022. 10. 11. 12:17

 

 

https://www.acmicpc.net/problem/2750

 

2750번: 수 정렬하기

첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.

www.acmicpc.net

 

 

* N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.

 

 

* (틀린 답안) 처음 제출

▶ 숫자를 넣을 때 아래로 넣는데 이 방식은 옆으로 넣음

▶ 반복문으로 만든 다음 list로 만들어서 배열이 최종값으로 되는데 문제는 숫자만 세로로 나열했어야 함

a = list(map(int, input().split()))

b = list(set(a))
print(b)

 

* (맞는 답안) 제출

▶ 각각의 숫자들을 넣음, 반복문을 사용

▶ 위와 동일하게 set 함수 이용(중복값 제거 위함)

int(input())을 넣는 이유 : 입력값(N)에 숫자만 넣게 하려고

N = int(input())
M = set()
for i in range(N):
    M.add(int(input()))

 

M = list(M) 필요, 그 전에 M은 배열([])이 아닌 딕셔너리({})로 나옴

N = int(input())
M = set()
for i in range(N):
    M.add(int(input()))

print(M) #{1, 2, 3, 4, 5}

 

sort 함수 배열에서 정렬, 기본정렬은 오름차순이며 내림차순을 원할 경우 reverse=True 사용

N = int(input())
M = set()
for i in range(N):
    M.add(int(input()))

M = list(M)
M.sort()

 

M의 길이만큼(len) 반복문을 사용해 순서대로 오름차순한 결과를 보여줌

▶ print(M)이 아닌 print(M[i])을 사용하는 이유 : print(M)을 사용하면 숫자가 아닌 배열이 결과로 나옴

N = int(input())
M = set()
for i in range(N):
    M.add(int(input()))

print(M)

M = list(M)
M.sort(reverse=True)
for i in range(len(M)):
    print(M[i]) # 1 2 3 4 5 이렇게 나옴
    #print(M) #[1, 2, 3, 4, 5] 이게 5번 나옴