Algorithm & Data Structure
분수들을 1/1 -> 1/2 -> 2/1 -> 3/1 -> 2/2 -> 1/3 -> ... 과 같이 지그재그 순서로 차례대로 1~..번 분수라고 한다. x가 주어졌을 때 x번째 분수를 구하란다. 일단 저 표대로 보려니까 너무 어려워서 그림을 돌려봤다. 피라미드처럼 본다고 그리고 볼 수 있다고 생각하자. 첫번째 라인은 1/1 두번째 라인은 2/1 1/2 세번째 라인은 3/1 2/2 1/3 ... 순서는 1 3 2 4 5 6 .. 이다 여기서 발견한 규칙은 짝수 행은 오른쪽에서 왼쪽, 홀수 행은 왼쪽에서 오른쪽으로 순서가 커지고 행 번호 + 1 = 분모 + 분자, 행의 번호와 그 행의 분수의 숫자는 같다. a : 원하는 분수 번호 cnt : 개수 n : 행 번호 n에 1씩 더할 때 마다 cnt에 n을 더하고..
설탕을 배달하는데 3킬로그램 봉지와 5킬로그램 봉지에 딱맞게 최소한의 봉투로 담고싶단다. a : 담고 싶은 설탕 kg b : 5kg 설탕봉투 result : 총 봉투의 개수 5kg 봉투로 최대한 담고 남은 양을 3kg에 담아야 가장 최소한의 봉투로 담기 때문에 먼저 5kg봉투로 담는다는 가정을 한다. 5kg으로만 가득 담고 남은 양이 3kg으로 나눠지는지 확인하고 안나눠진다면 5kg봉투 하나를 빼고, 또 3kg으로 나눠지는지 확인하고 안나눠지면 또 5kg봉투를 빼고 반복하다가 만약 3kg으로 나눠지면 총 봉투의 수를 b + ( a - b * 5) / 3 로 계산했다. 따라서 코드를 import java.util.Scanner; public class back2839 { public static void ..
손익 분기점 계산 문제이다. 내가 생각한 공식은 a : 고정비용 b : 가변비용 c : 상품가격 i : 손익분기점 판매량 만약 b >= c 일 경우에는 손익분기점이 발생할 수 없고 결과는 -1이 출력되어야 한다. 우리가 구하고 싶은 것은 i 이다. a + ( b * i ) = ( c * i ) 의 순간 손익분기점이 발생한다. a = ( c * i ) - ( b * i ) a = ( c - b ) * i a / ( c - b ) = i 일 때 손익 분기점이 발생하다. 그리고 문제는 손익분기점을 넘겨야 하기 때문에 +1한다. 따라서 코드를 import java.util.Scanner; public class back1712 { public static void main(String[] args) { Scan..