Algorithm Problem/Python

[python] λ°±μ€€ - 10773. κ΄„ν˜Έ

deo2kim 2020. 10. 27. 08:33
λ°˜μ‘ν˜•

πŸ€”λ¬Έμ œ ν•΄κ²°

  • S4 | μŠ€νƒ

λ„ˆλ¬΄ 기본적인 μŠ€νƒλ¬Έμ œλΌμ„œ ν¬μŠ€νŒ…μ„ μ•ˆν•˜λ €κ³  ν–ˆμ§€λ§Œ

input κ³Ό sys.stdin.readline 에 λŒ€ν•΄μ„œ λ§ν•˜κ³  μ‹Άμ–΄μ„œ ν¬μŠ€νŒ…ν–ˆλ‹€.

μœ„μ˜ 사진을 보면 μ‹œκ°„μ—μ„œ 큰 차이가 μžˆμ„ 것이닀.

μ²«λ²ˆμ§ΈλŠ” sys.stdin.readline을 μ‚¬μš©ν•˜κ³ , 두 λ²ˆμ§ΈλŠ” input을 μ‚¬μš©ν–ˆλ‹€.

μ—„μ²­λ‚œ μ‹œκ°„μ°¨μ΄κ°€ λ‚˜νƒ€λ‚œλ‹€.

μ΄λ ‡κ²Œ ν•œμ€„ ν•œμ€„ μ½λŠ” μ‹μœΌλ‘œ 인풋값을 받을 λ•ŒλŠ” 첫번째 방법을 μ‚¬μš©ν•˜λŠ” 게 훨씬 λΉ λ₯΄λ‹€.
속도 비ꡐ ν•˜κΈ°

 

[python] input, sys.stdin.readline

πŸ“— 파이썬 μ•Œκ³ λ¦¬μ¦˜ ν’€ λ•Œ!! μž…λ ₯ 속도 문제 πŸ”΅ input vs sys.stdin.readline 천만개의 숫자λ₯Ό ν•œμ€„ν•œμ€„ μž…λ ₯받을 λ•Œμ˜ 속도 μž…λ ₯ 방법 속도 input() 12.5초 sys.stdin.readline() 4.5초 κ²°λ‘ : μ—¬λŸ¬μ€„μ„ μž…λ ₯λ°›..

deok2kim.tistory.com

문제 ν•΄κ²° 방법은

  1. 빈 배열을 ν•˜λ‚˜ λ§Œλ“ λ‹€.
  2. 받은 값이 0이 μ•„λ‹Œκ²½μš° 배열에 값을 μΆ”κ°€ν•œλ‹€. append
  3. 받은 값이 0인 경우 λ°°μ—΄μ—μ„œ 값을 ν•˜λ‚˜ λΊ€λ‹€. pop

λ¬Έμ œμ—μ„œ 항상 pop을 보μž₯ν•œλ‹€κ³  ν–ˆμœΌλ―€λ‘œ 빈 λ°°μ—΄μ—μ„œ pop을 ν•  μˆ˜λ„ μžˆλŠ” μ˜ˆμ™Έμ²˜λ¦¬λ₯Ό μ•ˆν•΄μ€˜λ„ λœλ‹€.

πŸ’»μ†ŒμŠ€ μ½”λ“œ

import sys

input = sys.stdin.readline
K = int(input())
stack = []
for _ in range(K):
    n = int(input())
    if n:
        stack.append(n)
    else:
        stack.pop()

print(sum(stack))
 

 

πŸ“•λ¬Έμ œ 확인

좜처: BACKJOON ONLINE JUDGE

링크: https://www.acmicpc.net/problem/10773

 

10773번: 제둜

첫 번째 쀄에 μ •μˆ˜ Kκ°€ 주어진닀. (1 ≤ K ≤ 100,000) 이후 K개의 쀄에 μ •μˆ˜κ°€ 1κ°œμ”© 주어진닀. μ •μˆ˜λŠ” 0μ—μ„œ 1,000,000 μ‚¬μ΄μ˜ 값을 가지며, μ •μˆ˜κ°€ "0" 일 κ²½μš°μ—λŠ” κ°€μž₯ μ΅œκ·Όμ— μ“΄ 수λ₯Ό μ§€μš°κ³ , 아닐 κ²½

www.acmicpc.net

λ°˜μ‘ν˜•