Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

빠똥빠똥

2447번 별 찍기10(재귀) - ☆ 본문

백준

2447번 별 찍기10(재귀) - ☆

조주똥 2020. 7. 13. 18:25

#문제링크 : https://www.acmicpc.net/problem/2447

<전략>

1. n=3에서 i%3==1, j%3==1인 인덱스에서 빈칸이 출력되어야 한다.

2. n=9에서 1에서의 조건 + (i/3)%3==1, (j/3)%3==1인 인덱스에서 빈칸이 출력되어야 가운데에 3x3만큼의 공백이 생김

3. 마찬가지로 i와 j를 3씩 나눠주면서 위의 식과 같은 검사를 계속 해야한다.

4. 이 과정을 재귀로 구현해야한다.

5. 면밀히 살펴보면, 결국 인덱스 i, j만 조건식이 맞는지 아닌지를 판단하면 되고, i, j를 나누어주는 숫자가 3배씩 증가한다는 사실에 주목하자.

6. 만약 n=27이라면, 인덱스는 0~26까지가 돼고, 0~26의 숫자는 27로 나누면 항상 0이 되기 때문에, 1부터 시작해서 3과 9까지만 나누어주어도 나머지가 1인 구간을 찾아내서 공백으로 출력할 수 있다. 27, 81, 243 등의 숫자로 추가로 나누어 줄 필요가 없다는 소리다. 즉, 재귀가 멈추는 순간은 위의 조건식을 만족시켜서 공백을 출력하고 되돌아가는 경우나, 나누어 주는 숫자가 n/3이 되었을때, 별을 출력하고 리턴하는 경우다.

※주의사항

1. 반대로 9부터 시작해서 3씩 나누어 가면서 나누어 주는 숫자가 0이 되었을때, 별을 출력하고 리턴하는 방식으로 작성해도 된다.

Code