Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 시각화
- 마이온컴퍼니
- likelionlikelion
- 멋재이사자처럼
- seaborn
- 마이온
- SQL
- parklab
- folium
- intern10
- Join
- GIS
- BFS
- 그리디
- 알고리즘
- Python
- likelion
- 멋쟁이사자처럼멋쟁이사자처럼
- 프로젝트
- 인턴10
- DP
- TiL
- GNN
- ux·ui디자인
- pyhton
- Plotly
- 파이썬
- 멋사
- 멋쟁이사자처럼
- DFS
Archives
- Today
- Total
지금은마라톤중
[백준] 1977번 완전제곱수 / input()과 sys.stdin.readline() 차이 본문
https://www.acmicpc.net/problem/1977
처음에 이렇게 작성을 해서 실패하였다.
시간초과로 실패를 한 것은 처음이다.
#1977번- 시간초과로 실패
a = int(input())
b = int(input())
lst=[]
for i in range(a,b+1):
for s in range(2,i):
if s**2==i:
lst.append(i)
lst.sort()
if len(lst)==0:
print(-1)
else:
print(sum(lst))
print(lst[0])
for 문이 많아서 시간이 오래걸린다고 판단했다.
import math
a = int(input())
b = int(input())
lst=[]
for i in range(a,b+1):
if int(math.sqrt(i))**2 == i :
lst.append(i)
if len(lst)==0:
print(-1)
else:
print(sum(lst))
print(min(lst))
그래서 for문을 줄이고 제곱근을 활용하였다.
완전제곱수일 때만 제곱하였을 때 원래의 값이 나오기 때문에 이를 이용하였다.
이 방법 외에 시간을 줄일 수 있는 방법을 찾아보다가 입력값을 받는 차이에 대해 알아보았다.
input() 과 sys.stdin.readline() 차이
속도 차이가 나는 이유는?
input() :
- 개행 문자 없이 반화되고, prompt message를 받을 수 있다는 특징
-사용자가 입력하는 값 하나하나마다 버퍼에 저장하는 특징
sys.stdin.readline() :
- 개행 문자가 입력 끝에 포함되고, prompt message를 받아 출력하는 기능이 없어 상대적으로 빠름
- 개행문자까지 포함한 하나의 줄을 한번에 버퍼로 입력 받음
* 참고
strip() : 문자열의 맨 앞, 맨 끝의 공백을 제거
.rstrip() : 오른쪽에서, lstrip() : 왼쪽에서 공백 제거
이제까지 input()만을 사용했는데 sys.stdin.readline()의 장점을 알았으니 sys.stdin.readline() 사용하여 연습해야겠다.
'STUDY > Python 알고리즘' 카테고리의 다른 글
[백준] 2667번 단지번호붙이기 (1) | 2024.03.27 |
---|---|
[백준] 2644번 촌수계산 (0) | 2024.03.26 |
[백준] 1012번 유기농배추 (0) | 2024.03.25 |
[백준] 1260번 DFS와 BFS (1) | 2024.03.22 |
[백준] 1764번 듣보잡 / set() 집합의 시간복잡도 (1) | 2024.02.27 |
Comments