목록코딩 테스트/백준 문제 풀이 (107)
공부 기록장
문제 설명 0을 외칠 경우 가장 최근에 쓴 수가 지워진다. 지워진 수를 제외한 모든 수를 받아 적은 후, 그 수의 합을 구해보자. 입력 첫 번째 줄에 정수 K가 주어진다. 이후 K개의 줄에 정수가 하나씩 주어지고, 정수는 0에서 1,000,000사이의 값을 가지며, 정수가 0인 경우에는 최근에 쓴 수를 지우고, 아닐 경우에 해당 수를 쓴다. (정수가 0인 경우 지울 수 있는 수가 있음을 보장한다.) 출력 최종적으로 적어낸 수의 합을 출력 N = int(input()) num = [] for i in range(N): x = int(input()) if x == 0: num.pop() else: num.append(x) print(sum(num)) 시간 제한이 1초인데, 입력으로 주어지는 N은 100,00..
문제 설명 정수를 저장하는 스택을 구현하고, 입력으로 주어지는 명령을 처리하는 프로그램 명령은 총 다섯 가지 push x : 정수 x를 스택에 넣는 연산 pop : 스택 가장 위의 정수를 빼고 출력, 스택에 정수가 없는 경우 -1 size : 스택에 들어있는 정수의 개수 출력 empty : 스택이 비어있으면 1, 아니면 0 출력 top : 스택 가장 위에 있는 정수를 출력, 스택에 정수가 없는 경우 -1 입력 명령의 수 N(1 ~ 10,000)과 N개 줄에 명령어 입력 출력 출력해야 하는 명령이 주어질 때마다, 한 줄에 하나씩 출력 코드 # N = int(input()) import sys input = sys.stdin.readline N = int(input()) stack = [] for i in ..
문제 설명 양의 정수 n 에 대해서 n과 n의 각 자리 수를 더하는 함수 d(n) n, d(n), d( d(n) ) ... 과 같이 무한 수열 생성 가능 n은 d(n)의 생성자 생성자가 한 개보다 많은 경우도 존재 → 101의 생성자는 91, 100 생성자가 없는 숫자는 셀프 넘버 10,000보다 작거나 같은 셀프 넘버를 한 줄에 하나씩 출력하는 프로그램을 작성하시오. 입력 X 출력 10,000보다 작거나 같은 셀프 넘버를 한 줄에 하나씩 증가하는 순서로 출력한다. 시간 초과된 코드 # 1. 처음 풀이, 시간 초과 def constructor(n): for num in range(1, n): sum = num while num > 0: x = num % 10 sum += x num //= 10 if su..