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
- create 모드
- auto ddl
- SpringBoot개인프로젝트
- restful api 명세서
- jpa 연관관계
- restful 카멜케이스
- 파이썬
- ERD 수정
- restful api 작성 방법
- 테이블구성
- logout http 메소드
- Intellij terminal jar
- 연관관계
- springboot
- 터미널 실행
- 아규먼트 리졸버
- intellij 속도 향상
- Gradle - Kotlin
- initializr
- jpa
- springboot mysql
- 알고리즘
- 할일관리
- 데이터베이스
- 어노테이션
- restful login 메소드
- 테이블항목
- Gradle - Groovy
- 쿼리에러
- sendError()
Archives
- Today
- Total
리나 Dev토리
백준 10773번 : 제로 (파이썬) 본문
알고리즘 도토리반 스택 문제
👩💻 백준 10773번 제로
https://www.acmicpc.net/problem/10773
10773번: 제로
첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경
www.acmicpc.net
내가 구현한 방법은
파이썬의 리스트를 활용하여 스택처럼 사용하였다.
숫자가 들어오면 리스트에 추가하고, 0이 들어오면 맨 뒤에꺼를 삭제하는 방식으로 풀었다.
n = int(input()) # 입력하는 숫자의 갯수
lst = []
for _ in range(n):
num = int(input())
if num != 0: # 0이 아니면 그 숫자를 저장
lst.append(num)
else: # 0이 나오면, 마지막에 저장한 숫자를 빼주기
lst.pop()
print(sum(lst))
같은 코드인데 pypy3로 제출해보니
소요시간이 1/10 이하로 줄어 속도가 11.5배나 빨라진 것을 확인할 수 있었다.👀

pypy3은 JIT 컴파일(Just In Time)이라는 방식을 도입하였고, 지금도 유럽연합의 지원을 받아 개발중이다.
JIT 컴파일이란 프로그램 시작전에 컴파일을 하는 대신에, 프로그램을 실행하는 시점에 즉석에서 컴파일하는 방식이다. 인터프리터 언어의 성능 향상을 목적으로 도입한다. 인터프리트하면서 자주쓰이는 코드를 캐싱하여 속도가 빨라진다.
참고: https://ralp0217.tistory.com/entry/Python3-와-PyPy3-차이
복잡한 코드, 반복이 많이되는 코드를 사용할 때는
pypy3로 제출하면 속도 향상이 가능하다.
'자료구조&알고리즘' 카테고리의 다른 글
WIL 항해W4 자료구조/알고리즘 3주차 (0) | 2022.04.04 |
---|---|
백준 10814번 : 나이순 정렬(파이썬) (2) | 2022.03.30 |
TIL 항해W4 알고리즘 - 버블정렬, 선택정렬, 삽입정렬 (0) | 2022.03.29 |
WIL 항해W3 자료구조/알고리즘 2주차 (0) | 2022.03.27 |
WIL 항해W2 자료구조/알고리즘 1주차 (0) | 2022.03.20 |