-
별 찍기 - 10 시간초과코딩 연습/백준 2022. 4. 25. 10:34
꽤 어려운 문제였다. 처음에 감을 잡지 못해서 한참 헤맸다. 어떻게 재귀로 표현할지 감이 안잡혔다.
*의 조건을 찾아서 화면에 print하려고 했더니 전혀 감잡지 못했었다.
하지만 다른 블로그를 찾아보고나니, *의 조건을 찾는것이 아닌, " "의 조건을 찾고있었다. 나도 " "의 조건을 찾고 보니 문제의 해결방법이 보이기 시작했다.
" "의 조건은 n의 3등분의 가운데이면 이다. 그리고 나머지가 모두 *은 아니다. 해당 자리가 한변에 n/3길이의 정사각형에서 3등분의 가운데인지도 살펴봐야 한다. 이것을 n이 3일 때까지 반복하여 모두 " "자리가 아니었을 때만 *을 출력한다.
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); for(int y=0; y<n; y++) { for(int x=0; x<n; x++) star(x, y, n); System.out.println(""); } sc.close(); } public static void star(int x, int y, int n) { if((x*3/n%3==1)&&(y*3/n%3==1)) System.out.print(" "); else { if(n==3) System.out.print("*"); else star(x, y, n/3); } } }'코딩 연습 > 백준' 카테고리의 다른 글
시간초과 (python, java) (0) 2022.05.25 소수 구하기-시간초과 (0) 2022.04.23 소인수분해-시간초과 (0) 2022.04.23