문제 8911번: 거북이 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 컨트롤 프로그램이 주어진다. 프로그램은 항상 문제의 설명에 나와있는 네가지 명령으로만 이루어져 www.acmicpc.net 코드 My answer import sys input=sys.stdin.readline t=int(input()) for i in range(t): rom=[] pos=[0,0] nav=[1,0,0,0] mxposx,mnposx,mxposy,mnposy=0,0,0,0 command=input() for j in command: if(nav[0]==1): if(j=='F'): pos[1]+=1 elif(j=='B'): pos[1]-=1 elif(j=='L'): nav[..
문제 1495번: 기타리스트 첫째 줄에 N, S, M이 주어진다. (1 ≤ N ≤ 50, 1 ≤ M ≤ 1,000, 0 ≤ S ≤ M) 둘째 줄에는 각 곡이 시작하기 전에 줄 수 있는 볼륨의 차이가 주어진다. 이 값은 1보다 크거나 같고, M보다 작거나 같다. www.acmicpc.net 코드 My answer(완전탐색-메모리초과) import sys input=sys.stdin.readline n,s,m=map(int,input().split()) v=list(map(int,input().split())) dp=[[s]] for i in range(1,n+1): tmp=[] for j in dp[i-1]: if(j+v[i-1]=0): tmp.append(j-v[i-1]) if(tmp==[]): prin..
문제 15989번: 1, 2, 3 더하기 4 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 4가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 합을 이루고 있는 수의 순서만 다른 것은 같은 것으로 친다. 1+1+1+1 2+1+1 (1+1+2, 1+2+1) 2+2 www.acmicpc.net 코드 My answer import sys input=sys.stdin.readline num,test=[1,2,3],[] t=int(input()) for i in range(t): test.append(int(input())) dp=[0 for i in range(max(test)+1)] dp[0]=1 for i in range(len(num)): for j in range(0,max(test..
문제 2294번: 동전 2 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. 가치가 같은 동전이 여러 번 주 www.acmicpc.net 코드 Another answer import sys r = sys.stdin.readline N, K = map(int, r().split()) coins = sorted([int(r()) for _ in range(N)]) dp = [10001] * (K+1) dp[0] = 0 for i in range(N): for j in range(coins[i], K+1): dp[j] = min(dp[j], dp[j-coins[i]]..
문제 2293번: 동전 1 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. www.acmicpc.net 코드 My answer import sys from itertools import combinations input=sys.stdin.readline n,k=map(int,input().split()) coin=[] dp=[1]+[0 for i in range(k)] for i in range(n): coin.append(int(input())) for i in range(len(coin)): for j in range(0,k+1): if(j-coin[i]>..
문제 1890번: 점프 첫째 줄에 게임 판의 크기 N (4 ≤ N ≤ 100)이 주어진다. 그 다음 N개 줄에는 각 칸에 적혀져 있는 수가 N개씩 주어진다. 칸에 적혀있는 수는 0보다 크거나 같고, 9보다 작거나 같은 정수이며, 가장 www.acmicpc.net 코드 My answer(시간초과)-재귀 def find_route(x,y,tmp,lim,cnt): if(x>=lim or y>=lim or tmp[x][y]==0): if(x==lim-1 and y==lim-1): return 1 return 0 elif(x==lim-1 and y==lim-1): return 1 else: if(x+tmp[x][y]
문제 15486번: 퇴사 2 첫째 줄에 N (1 ≤ N ≤ 1,500,000)이 주어진다. 둘째 줄부터 N개의 줄에 Ti와 Pi가 공백으로 구분되어서 주어지며, 1일부터 N일까지 순서대로 주어진다. (1 ≤ Ti ≤ 50, 1 ≤ Pi ≤ 1,000) www.acmicpc.net 코드 My answer import sys input=sys.stdin.readline n=int(input()) tmp,price=[],[] for i in range(n): tmp.append(list(map(int,input().split()))) tmp.append([0,0]) price=[i[1] for i in tmp] for i in range(n-1,-1,-1): if(i+tmp[i][0]>n): price[i]=..