빠똥빠똥
2447번 별 찍기10(재귀) - ☆ 본문
#문제링크 : 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이 되었을때, 별을 출력하고 리턴하는 방식으로 작성해도 된다.
'백준' 카테고리의 다른 글
2798번 블랙잭(브루트 포스) (0) | 2020.07.14 |
---|---|
11729번 하노이 탑 이동 순서(재귀, pow, 입출력) - ☆ (0) | 2020.07.13 |
2004번 조합 0의 개수 - ☆ (0) | 2020.07.12 |
11721번 열 개씩 끊어 출력하기(getchar(), EOF) - ☆ (0) | 2020.07.12 |
11718번 그대로 출력하기(getline) - ☆ (0) | 2020.07.12 |