문제 설명 두 개의 직선을 나타내는 4개의 점이 입력으로 주어질 때, 두 직선이 만나는지를 확인하는 프로그램을 작성하시오. 입력 입력의 첫 번째 줄에는 테스트 케이스의 개수 N이 주어진다. (N LINE if isSamePoint(d1,x1,y1,x3,y3): print("LINE") # 기울기가 같고,같은점을 지나지 않는다면 => NONE else: print("NONE") else: # 그외 모든경우 POINT point = findPoint(d1,d2,x1,y1,x3,y3) print("POINT {:.2f} {:.2f}".format(point[0],point[1])) else: # 둘다 무한 일때 if x1 == x2 and x3 == x4: if x1==x3: print("LINE") else..
문제 설명 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 하나씩 있는 패턴이다. *** * * *** N이 3보다 클 경우, 크기 N의 패턴은 공백으로 채워진 가운데의 (N/3)×(N/3) 정사각형을 크기 N/3의 패턴으로 둘러싼 형태이다. 예를 들어 크기 27의 패턴은 예제 출력 1과 같다. 입력 첫째 줄에 N이 주어진다. N은 3의 거듭제곱이다. 즉 어떤 정수 k에 대해 N=3k이며, 이때 1 ≤ k < 8이다. 출력 첫째 줄부터 N번째 줄까지 별을 출력한다. 문제 분석 과정 문제의 예시를 통해 유추하는게 중요한 문제이다. 첫 번째 예..
문제 설명 우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행사가 되어 새로운 세계에 발을 내려 놓는 영광의 순간을 기다리고 있다. 그가 탑승하게 될 우주선은 Alpha Centauri라는 새로운 인류의 보금자리를 개척하기 위한 대규모 생활 유지 시스템을 탑재하고 있기 때문에, 그 크기와 질량이 엄청난 이유로 최신기술력을 총 동원하여 개발한 공간이동 장치를 탑재하였다. 하지만 이 공간이동 장치는 이동 거리를 급격하게 늘릴 경우 기계에 심각한 결함이 발생하는 단점이 있어서, 이전 작동시기에 k광년을 이동하였을 때는 k-1 , k 혹은 k+1 광년만을 다시 이동할..
문제 설명 다음의 점화식에 의해 정의된 수열 t(n)을 생각하자: t(0)=1 t(n)=t(0)*t(n-1)+t(1)*t(n-2)+...+t(n-1)*t(0) 이 정의에 따르면, t(1)=t(0)*t(0)=1 t(2)=t(0)*t(1)+t(1)*t(0)=2 t(3)=t(0)*t(2)+t(1)*t(1)+t(2)*t(0)=5 ... 주어진 입력 0 ≤ n ≤ 35에 대하여 t(n)을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 n (0 ≤ n ≤ 35)이 주어진다. 출력 첫째 줄에 t(n)을 출력한다. 문제 분석 과정 주어진 점화식을 갖고 다이나믹 프로그래밍 알고리즘을 이용해 문제를 해결해야한다. 주어진 점화식은 다음과 같다. 점화식 소스 코드 n = int(input()) dp = [0 for _ in..
문제 설명 2×N 크기의 벽을 2×1, 1×2, 1×1 크기의 타일로 채우는 경우의 수를 구해보자. 입력 첫째 줄에 N(1 ≤ N ≤ 1,000,000)이 주어진다. 출력 첫째 줄에 경우의 수를 1,000,000,007로 나눈 나머지를 출력한다. 문제 분석 과정 주어진 조각은 3개이고, 회전은 불가능하다 마지막 칸(가장 우측)을 바라 보자 그러면 가능한 마지막칸을 구성하기 위한 case를 나눌 수 있다. 1. 1x1을 2개를 구성해서 2x1칸을 이루는 경우 => (2,1) 2. 2x1 1개로 2x1칸을 이루는 경우 => (1,1)+(1,1) 3. 1x2 1개로 2x2칸을 이루는 경우 => (1,2)+(1,2) 4. 1x1개로 위에 한칸을 이루는 경우 => (1,1) 5. 1x1개로 아래에 한칸을 이루는 ..