알고리즘/Python

for문제를 range, join, map을 활용해서 풀기

임리을 2021. 4. 26. 17:50

문제)

자연수 N이 주어졌을 때, N부터 1까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오.

 

입력)

첫째 줄에 100,000보다 작거나 같은 자연수 N이 주어진다.

 

출력)

첫째 줄부터 N번째 줄 까지 차례대로 출력한다.

 

예제
입력 출력
5 5
4
3
2
1

 

저는 이 문제를 보았을 때 알고리즘 단계에 for문 안에 있어서 그대로 하면 되겠다 싶었습니다.

 


For i in range(int(input()), 0, -1):
    print(i)

 

나름 용량 적게 먹으라고 짧게 작성했는데 더 효율적인(?) 코드를 보았습니다.

n = range(int(input()),0,-1)
print('\n'.join(map(str,n)))

 

풀어보면(임의로 a, b 정의했습니다)

>>> a = int(input())
a = 5

>>> b = range(a, 0, -1)
range(5, 0, -1)

>>> b = list(b)
[5, 4, 3, 2, 1]

>>> b = list(map(list(b)))
['5', '4', '3', '2', '1']

>>> print('\n'.join(b))
5
4
3
2
1

 

 

길이는 더 길긴 하지만, 속도면에서 112ms / 88ms로 꽤나 차이났습니다.

 

아직 시간이 중요한지 용량이 중요한지 잘 모르긴 하지만, 새로운 접근 방법은 재밌는 거 같습니다.