분할정복

    [백준][코틀린] 1629 곱셈

    문제 내용 문제 자연수 A를 B번 곱한 수를 알고 싶다. 단 구하려는 수가 매우 커질 수 있으므로 이를 C로 나눈 나머지를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. 출력 첫째 줄에 A를 B번 곱한 수를 C로 나눈 나머지를 출력한다. 예제 입력 예제 출력 10 11 12 4 문제 풀이 본 문제는, Kotlin의 BigInteger을 사용해도 풀리기는 한다. 하지만, 문제의 의도가 그걸 원한건 아닐테고.. 그렇게 푼다고 해서 실력이 는다 생각하지도 않아서, 문제의 의도대로 분할 정복을 이용해서 풀었다. 지수가 짝수일 땐, \(2^{10}\) = \(2^5\) * \(2^5\) 로 ..

    [백준][코틀린] 2447 별 찍기 - 10

    문제 내용 문제 재귀적인 패턴으로 별을 찍어 보자. 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