1. 문제 난이도 2. 문제설명 괄호가 정상적으로 포함된 어떤 수식이 주어졌을 때, 괄호를 제거해서 만들 수 있는 식을 사전순에 맞게 출력하는 문제이다. 괄호가 포함된 식에서 사전 순 이라고 하면 아스키 값 기준으로 괄호가 더 우선이라고 생각하면 된다. 괄호가 포함된 수식 괄호를 제거해 만들 수 있는 모든 경우의 식 3. 아이디어 먼저 input을 한글자씩 쪼개 괄호를 맞는 쌍끼리 짝지었다. 스택에 여는 괄호 '('를 하나씩 저장하고 ')'를 만날 때 하나씩 스택에서 꺼내 짝을 지었다. 구해놓은 괄호 쌍들에 대해 각각 그 괄호쌍을 제거한 리스트, 괄호쌍을 포함한 리스트를 얻었다. 문제를 풀면서 내가 시간이 오래 걸렸던 부분은 총 3가지가 있었다. 1. 모든 조합을 구하기 이부분은 재귀함수로 구현했다. 2..
1. 문제 난이도 2. 문제설명 정상에서부터 산을 따라 내려오는 자전거의 속력을 각 구간별로 출력하는 문제이다. 산의 능선은 길이와 각도가 다른 선분으로 이루어져 있다. 첫 줄: 구간의 길이 n과 중력가속도 g가 공백으로 구분되어 주어진다. 그 후 n줄: 구간의 길이, 수직선으로부터 구간의 각도가 공백으로 구분되어 n줄에 걸쳐 주어진다. 각 구간이 끝나는 지점에서의 속력을 n줄에 걸쳐 출력한다. 3. 아이디어 이 문제의 경우 속력을 구하기 위해 사용하기 적절한 공식은 우리가 물리 시간에 들었던 $2as=v^2 -{v_0}^2$이다. 물체의 운동에 관한 시간이 나와있지 않으므로 시간 항이 없는 공식이 적절하다고 생각했다. 문제에서 제시되어 있듯이 비탈을 내려오는 물체의 가속도는 $g cos\left( \t..
1. 문제 난이도 2. 문제설명 피보나치 수열이 변형된 듯한 수열을 소개하고 이 수열의 N번째 항을 구하는 문제이다. 첫 줄: 테스트케이스의 개수 t 다음 t줄: n 각 input n에 대해 수열의 n째 값 3. 아이디어 다른 수열문제처럼 DP를 활용하는 것은 쉽게 생각할 수 있다. 그러나 입력의 개수가 많기 때문에 나는 입력 받은 값들 중 가장 큰 값을 구한 뒤, 그 값까지의 수열을 먼저 구했다. 그 후 각 입력에 맞는 수열의 값을 출력했다. 4. 구현 nlist=[1,1,2,4] def func(n): return nlist[n-1]+nlist[n-2]+nlist[n-3]+nlist[n-4] inputlist=[] t=int(input()) for i in range(t): inputlist.appe..
1. 문제 난이도 2. 문제설명 문제에서 제시한 점화식을 구현하는 문제이다. t(n)=t(0)*t(n-1)+t(1)*t(n-2)+...+t(n-1)*t(0) n의 값 t(n) 3. 아이디어 이 문제는 재귀함수를 사용하면 함수의 호출횟수가 너무 많아지므로 t(n)을 구하고 리스트에 저장시키고, 다음 연산시에 그 값을 가져와서 사용하는 방식을 택했다. 4. 구현 func함수를 따로 만들어 t(n)을 구해주었다. tlist=[1,1] def func(n): sumt=0 for i in range(0,n): sumt+=(tlist[i]*tlist[n-1-i]) return sumt for i in range(2,36): tlist.append(func(i)) n=int(input()) print(tlist[n]..
1. 문제 난이도 2. 문제설명 일차함수가 $n$개 있다. $f_{i} (x) = a_{i} x + b_{i}$ 처럼 표현한다. 이 함수들의 $x$부분에 각각 $1$부터 $n$까지 한번씩 대입해 만들 수 있는 $f(x)$의 최댓값을 구하는 문제이다. 첫번째 줄: $n$ 두번째 줄부터 $n$개의 줄에 걸쳐 $a_{i}, b_{i}$가 공백으로 구분되어 입력 최댓값 3. 아이디어 문제에서 변할 수 있는 부분은 $x$와 곱해지는 $a$부분이다. 반대로 얘기하면 $b$는 변하지 않는다는 것이다. 그래서 $b$부분은 먼저 최댓값에 더하기로 했다. 이제 $b$를 빼고 생각하면 되므로 $ax$부분의 최댓값을 구하면 된다. $x$는 $1$부터 $n$까지 한번씩만 사용되므로 큰 $a$값과 큰 $x$값이 서로 곱해지는게 ..