전체 글

CS,PS, Algorithm
· PS/Geometry
문제 설명 두 개의 직선을 나타내는 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..
문제 설명 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. 예시 - 1 * * * ***** * * * * * * ***** ***** * * * * * * ***** ***** * * * * * * * * * * * * ***** ***** ***** ***** * * * * * * ***** ***** * * * * * * * * * * * * ***** ***** ***** ***** * * * * * * * * * * * * ***** ***** ***** ***** * * * * * * * * * * * * * * * * * * * * * * * * ***** ***** ***** ***** ***** ***** ***** ***** 입력 첫째 줄에 N이 주어진다. N은 항상 3×2^k 수이..
문제 설명 재귀적인 패턴으로 별을 찍어 보자. 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번째 줄까지 별을 출력한다. 문제 분석 과정 문제의 예시를 통해 유추하는게 중요한 문제이다. 첫 번째 예..
· PS/Math
문제 설명 우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행사가 되어 새로운 세계에 발을 내려 놓는 영광의 순간을 기다리고 있다. 그가 탑승하게 될 우주선은 Alpha Centauri라는 새로운 인류의 보금자리를 개척하기 위한 대규모 생활 유지 시스템을 탑재하고 있기 때문에, 그 크기와 질량이 엄청난 이유로 최신기술력을 총 동원하여 개발한 공간이동 장치를 탑재하였다. 하지만 이 공간이동 장치는 이동 거리를 급격하게 늘릴 경우 기계에 심각한 결함이 발생하는 단점이 있어서, 이전 작동시기에 k광년을 이동하였을 때는 k-1 , k 혹은 k+1 광년만을 다시 이동할..
· PS/DP
문제 설명 다음의 점화식에 의해 정의된 수열 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..
· PS/DP
문제 설명 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개로 아래에 한칸을 이루는 ..
· PS/DP
문제 설명 RGB거리에는 집이 N개 있다. 거리는 선분으로 나타낼 수 있고, 1번 집부터 N번 집이 순서대로 있다. 집은 빨강, 초록, 파랑 중 하나의 색으로 칠해야 한다. 각각의 집을 빨강, 초록, 파랑으로 칠하는 비용이 주어졌을 때, 아래 규칙을 만족하면서 모든 집을 칠하는 비용의 최솟값을 구해보자. 1번 집의 색은 2번 집의 색과 같지 않아야 한다. N번 집의 색은 N-1번 집의 색과 같지 않아야 한다. i(2 ≤ i ≤ N-1)번 집의 색은 i-1번, i+1번 집의 색과 같지 않아야 한다. 입력 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000..
황빵
황빵's World