알고리즘/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로 꽤나 차이났습니다.
아직 시간이 중요한지 용량이 중요한지 잘 모르긴 하지만, 새로운 접근 방법은 재밌는 거 같습니다.