BJ10773_제로_python

Kidon Seo·2021년 4월 23일
0

1. 문제링크

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

2. 풀이 전 계획과 생각

< 정보 정리 >

1) 입력값: 테스트 케이스 T, 정수 T개
2) 출력값: 정수 중 남아있는 수의 합
3) 제약조건:

- 1 <= T <= 1,000,000
- 0 <= 정수 <= 1,000,000
- 정수가 0일 경우 직전 입력 값을 지운다.

4) 예외케이스: 없음

< 공통 로직 >

  • 0 외의 정수가 입력되면 array에 추가한다.
  • 0 이 입력되면 array의 마지막 값을 빼준다.
  • 모든 수가 입력되면 array의 값을 더해준다.

3. 풀이

def zero():
  n = int(input("Please enter the number of values: "))
  num_provided = []
  result = 0
  count = 0
  while count < n:
    count += 1
    value = int(input(f"Insert value ({count}/{n}): "))
    if value == 0:
        num_provided.pop()
    else:
        num_provided.append(value)
  for i in num_provided:
    result += i
  print(result)

zero()

4. 풀이하면서 막혔던 점과 고민

스택개념을 생각하면서 조건이 부합할때 pop() 메소드를 사용하는 식으로 구현했다.

5. 풀이 후 알게된 개념과 소감

이미 구현된 pop()을 사용하지 않는다면 어떻게 구현하면 될까 고민해봤는데 마지막 값을 뺀 새로운 array를 만들어내는 방법이 있는 것 같다.

def pop(array):
  return array[:-1]

0개의 댓글