첫번째 코드 - 60ms import sys T = int(input()) for _ in range(T): line = sys.stdin.readline() bracket =[] cnt = 0 for ch in line: if cnt 0: bracket.pop() cnt -= 1 else: cnt = -1 break if cnt == 0: print("YES") else: print("NO") 처음에는 단순히 스택만 생각해서 리스트를 만들고 append하고 pop하는 방식으로 구현했는데 뭔가 코드가 더러워져서 다시 짰다. 코드 길이도 훨씬 짧고 시간도 훨씬..
K = int(input()) list = [] for _ in range(K): n = int(input()) if n == 0: if len(list)>0: list.pop() else: list.append(n) print(sum(list)) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(S..
import sys N = int(input()) stack = [] for _ in range(N): line = sys.stdin.readline().split() if line[0] == "push": stack.append(int(line[1])) elif line[0] == "pop": if len(stack)>0: print(stack[-1]) stack.pop() else: print(-1) elif line[0] == "size": print(len(stack)) elif line[0] == "empty": if len(stack) == 0: print(1) else: print(0) elif line[0] == "top": if len(stack) > 0: print(stack[-1]) ..
import sys line = sys.stdin.readline() line = list(line.replace('-', ' ').split()) for num in line: if '+' in num: temp = list(map(int, num.split('+'))) s = sum(temp) line[line.index(num)] = s else: line[line.index(num)] = int(num) #단순 형변환 print(line[0]-sum(line[1:])) ▼ 링크 https://www.acmicpc.net/problem/1541
N = int(input()) def fibo(N): if N==0: return 0 elif N==1: return 1 return fibo(N-2) + fibo(N-1) print(fibo(N)) ▼ 링크 https://www.acmicpc.net/problem/10870 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n>=2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1..
재귀로 푸는 방법 N = int(input()) def factorial(N): if N 0: factorial *= N N-=1 print(factorial) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); System.out.println(f..
import sys N = int(input()) P = list(map(int, sys.stdin.readline().split())) P.sort() sum = 0 for time in P: sum += time * N N -= 1 print(sum) ▼ 링크 https://www.acmicpc.net/problem/11399
import sys N = int(input()) meeting = [] for _ in range(N): meeting.append(list(map(int, sys.stdin.readline().split()))) meeting = sorted(meeting, key=lambda x : [x[1], x[0]]) #이부분 cnt = 0 max = 0 for i in meeting: if max
N, K = map(int, input().split()) a = [] for i in range(N): a.append(int(input())) cnt = 0 for i in reversed(a): if K == 0: break if (K // i) >= 1: cnt += (K // i) K -= (i * (K//i)) print(cnt) ▼ 문제링크 https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www...
n = int(input()) result = 0 for i in range(1, n + 1): if i