BJ2751_수_정렬하기_2_python

Kidon Seo·2021년 4월 23일
0

1. 문제링크

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

2. 풀이 전 계획과 생각

< 정보 정리 >

1) 입력값: 테스트 케이스 T, 정수 T개
2) 출력값: 정수 T개의 오름차순 출력
3) 제약조건:

- 1 <= T <= 1,000,000
- 0 <= 정수 <= 1,000,000
- 중복 X

4) 예외케이스: 없음

< 공통 로직 >

  • [a, b, c, d, e]

  • Index 0 부터 5 까지
    * x > y 일 경우, x 와 y 를 swap한다.

  • Index 0 부터 4 까지
    * x > y 일 경우, x 와 y 를 swap한다.
    ...

  • Index 0 부터 1 까지
    * x > y 일 경우, x 와 y 를 swap한다.

3. 풀이

def ascending_number():
  n = int(input("Please enter the number of values: "))
  array = []
  while len(array) < n:
    value = int(input(f"Insert value ({len(array)+1}/{n}): "))
    if value in array:
      print("This value is already provided.")
    else:
      array.append(value)
  for i in range(len(array)):
    for j in range(len(array) - i - 1):
      if array[j] > array[j + 1]:
        temp = array[j]
        array[j] = array[j + 1]
        array[j + 1] = temp
  for i in array:
    print(i)


ascending_number()

4. 풀이하면서 막혔던 점과 고민

기본적인 정렬의 한 종류인 버블정렬인데 처음에는 for j in range(len(array) - i - 1):range를 정하는게 살짝 헷갈렸다.

5. 풀이 후 알게된 개념과 소감

Python에서는 굳이 정렬을 직접 구현하지 않아도 set를 활용해서 sorted() 메소드를 사용하면 되는 것을 배웠다.

def ascending_number():
  n = int(input("Please enter the number of values: "))
  num_provided = set()
  while len(num_provided) < n:
    value = int(input(f"Insert value ({len(num_provided)+1}/{n}): "))
    if value in num_provided:
      print("This value is already provided.")
    else:
      num_provided.add(value)
  for i in sorted(num_provided):
    print(i)

ascending_number()

0개의 댓글