ABOUT ME

Today
Yesterday
Total
  • 별 찍기 - 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
Designed by Tistory.