본문 바로가기
컴퓨터/백준 문제풀이

11650 좌표 정렬하기, 10989 수 정렬하기 3, 2747 피노나치 수

by 하링아 2020. 9. 12.
반응형

11650 좌표 정렬하기

 

그냥 정렬 문제랑 비슷하다고 생각했는데 두번째 항목의 정렬법을 모름

test_case = int(input())
array = []
for _ in range(test_case):
    data = list(map(int, input().split(' ')))
    array.append((data[0], data[1]))
array = sorted(array)

for i in array:
    print(i[0], i[1])

그냥 sorted()에 key값만 빼주면 된다니 ... 그럼 첫번째 항목 오름차순, 두번째 항목 내림차순은 어떻게하지..?

 

얻은 것

- sorted() 함수는 기본적으로 오름차순으로 정렬

- 아래 링크를 따라가면 같이 사용할 수 있는 정렬 관련 함수도 있음. 유용함

https://docs.python.org/ko/3/howto/sorting.html

 

 

10989 수 정렬하기 3

n = int(input())
array = []

for _ in range(n):
    array.append(int(input()))

for i in array:
    print(i)
    
# 배열의 인덱스를 이용한 다른 풀이
import sys

n = int(sys.stdin.readline())
array = [0] * 10001 # 들어올 수 있는 수 범위가 정해져있기 때문에 배열의 범위 제한

for i in range(n):
    data = int(sys.stdin.readline())
    array[data] += 1
    
for i in range(10001):
    if array[i] != 0:
        for j in range(array[i]):
            print(i)

얻은 것

- 많은 데이터를 받을 때는 input() 대신 sys.stdin.readline() 함수를 이용

- 범위가 정해져있을 경우 인덱스를 이용해서 정렬할 수 있음

 

 

2747 피노나치 수

 

# 내 풀이
def fibo(n):
    if n == 0:
        return 0
    if n == 1:
        return 1
    return fibo(n-1) + fibo(n-2)
    
print(fibo(int(input())))


# 다른 풀이
n = int(input())
a = 0
b = 1

while n > 0:
  a, b = b, a+b
  n -= 1
    
print(a)
    

얻은 것

- 재귀 함수를 이용하는 식이라고해서 무조건 이용하는게 아니라 비슷하게 동작하는 함수 만들어야 효율 좋음

반응형

댓글