Dev.baelanche

[백준 2290] LCD Test 본문

Data Structure & Algorithm/PS - JAVA

[백준 2290] LCD Test

baelanche 2019. 5. 8. 20:27
반응형

 

 

배열 한개에 그리는 방식으로 풀었다.

공백 한칸을 비우는 부분만 신경을 잘 써주면 된다.

 

 

public class Main {
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int s = sc.nextInt();
        String n = sc.next();
        
        int height = 2*s + 3;
        int width = s + 2;
        int len = n.length();
        
        char a[][] = new char[height][len * width + len-1];
        
        for(int i=0; i<a.length; i++) {
            for(int j=0; j<a[0].length; j++) {
                a[i][j] = ' ';
            }
        }
        
        int blank = -1;
        for(int i=0; i<len; i++) {
            //우상 세로선
            if(n.charAt(i) != '5' && n.charAt(i) != '6') {
                for(int j=1; j<height/2; j++)
                    a[j][width * (i+1) + blank] = '|';
            }
            //우하 세로선
            if(n.charAt(i) != '2') {
                for(int j=height/2+1; j<height-1; j++)
                    a[j][width * (i+1) + blank] = '|';
            }
            //좌상 세로선
            if(n.charAt(i) == '4' || n.charAt(i) == '5' || n.charAt(i) == '6' || n.charAt(i) == '8' || n.charAt(i) == '9' || n.charAt(i) == '0') {
                for(int j=1; j<height/2; j++)
                    a[j][width * (i+1) + blank - (width-1)] = '|';
            }
            //좌하 세로선
            if(n.charAt(i) == '2' || n.charAt(i) == '6' || n.charAt(i) == '8' || n.charAt(i) == '0') {
                for(int j=height/2+1; j<height-1; j++)
                    a[j][width * (i+1) + blank - (width-1)] = '|';
            }
            //가로선
            if(n.charAt(i) != '1') {
                for(int j=0; j<height; j++) {
                    if(j == 0 && n.charAt(i) != '4') {
                        for(int k=1; k<=s; k++)
                            a[j][width * (i+1) + blank - k] = '-';
                    }
                    if(j == height/2 && n.charAt(i) != '7' && n.charAt(i) != '0')
                        for(int k=1; k<=s; k++)
                            a[j][width * (i+1) + blank - k] = '-';
                    if(j == height-1 && n.charAt(i) != '4' && n.charAt(i) != '7')
                        for(int k=1; k<=s; k++)
                            a[j][width * (i+1) + blank - k] = '-';
                }
            }
            blank++;
        }
        
        for(int i=0; i<a.length; i++) {
            for(int j=0; j<a[0].length; j++) {
                System.out.print(a[i][j]);
            }
            System.out.println();
        }
    }
}

 

 

제대로 출력되었는데도 계속 틀리길래 문제를 다시 확인해보니

 

빈 공간은 공백으로 채워야 한다고 적혀있었다...;; 빈 공간은 꼭 공백으로 채워주자.

반응형

'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글

[백준 10844] 쉬운 계단 수  (0) 2019.05.09
[백준 1912] 연속합  (0) 2019.05.09
[백준 2447] 별 찍기 - 10  (0) 2019.05.07
[백준 1074] Z  (0) 2019.05.07
[백준 11000] 강의실 배정  (0) 2019.05.07
Comments