백준 2447 g5 별 찍기 - 10 c++
https://www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 풀이 그냥 재귀로 찍으면 되는 것이 아니라, 프린터처럼 한 줄씩 찍어야하기 때문에 \n 개행 처리가 복잡하다. 어쨌거나 한 줄마다 찍어야 하므로, 한 줄 단위로 재귀적으로 생각해봤다 N=3 일 때, *** g(3, 2) * 3개 // *** *** *** 4번째 줄 -> g(3, 0), 공백*3, g(3, 0) 5번째 줄 -> g(3, 1), 공백*3, g(3, 1) 6..
2024. 1. 13.
백준 s1 1074 Z c++
https://www.acmicpc.net/problem/1074 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 www.acmicpc.net 풀이 처음에는 cnt를 두고 한 칸씩 이동하면서 r, c를 찾으려고 하였으나 시간초과가 떴다. 생각해보면 전체 board를 4등분하고 찾으려는 위치가 한 곳에 속하면 나머지는 어차피 2^(N-1)의 제곱 크기만큼 차지하므로, 나머지의 순서는 구할 필요가 없다. 수도코드 N == 3 일 때를 예시로 작성했다 func(n, r, c) if 1번 부분에 속하면 return func(n-1, r..
2024. 1. 13.
백준 s1 1629 곱셈 c++
https://www.acmicpc.net/problem/1629 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net 풀이 시간 제한이 0.5초라 그냥 a*func(a-1)은 시간 초과가 걸릴 수 있다. A^B % C = A^(B/2) % C * A^(B/2) % C로 나뉘어질 수 있고 이렇게 하면 log 시간 복잡도가 되기 때문에 괜찮아 보인다. 수도 코드 func (a, b, c) if (b == 1) return a % c else return func(a, b/2, c)^2 코드 /*boj s1 1629 곱셈*/ #include #define MAXN 105 using ..
2024. 1. 13.