Coding Test Study/Programmers

[Java] 전광판 컨트롤

똑똑한망치 2024. 2. 17. 22:31
728x90
반응형

1. 문제

전광판에서 숫자를 출력하게 되는데, 전광판은 총 5줄로 되어 있으며 숫자는 아래 그림과 같이 표현한다.

 

위와 같이 각 숫자는 '#' 와 '-'로 표현되며, 각 숫자 사이에는 위와 같이 공백으로 구분된다.

이 때, 숫자 n을 입력받아 전광판의 각 라인에 출력할 내용을 순서대로 배열로 반환하는 프로그램을 작성하시오.

 

 

 

2. 입력 설명

  • 0 <= n <= 10000

 

3. 출력 설명

문자열로 이루어진 배열 반환

 

 

4. 매개변수 형식

n = 132

 

 

 

5. 반환값 형식

 

 

 

 

6. 코드 구현

import java.util.*;

class Solution {

	// 전광판은 총 5줄
	static final int NUM_LINE = 5;
    
    public String[] solution(int n) {
    	String[][] digitsToString = new String[NUM_LINE][10];
        
        digitsToString[0] = "##### --#-- ##### ##### #---# ##### ##### ##### ##### #####".split(" ");
        digitsToString[1] = "#---# --#-- ----# ----# #---# #---- #---- ----# #---# #---#".split(" ");
        digitsToString[2] = "#---# --#-- ##### ##### ##### ##### ##### ----# ##### #####".split(" ");
        digitsToString[3] = "#---# --#-- #---- ----# ----# ----# #---# ----# #---# ----#".split(" ");
        digitsToString[4] = "##### --#-- ##### ##### ----# ##### ##### ----# ####3 ----#".split(" ");
        
        String inputDigit = String.valueOf(n);
        String[] result = new String[NUM_LINE];
        Arrays.fill(result,"");
        
        for (int i = 0; i < inputDigit.length() ; i++) {
        
        	// 입력받은 숫자 한 글자씩 intDigit 변수에 대입
        	int intDigit = Character.getNumericValue(inputDigit.charAt(i));
            
            for (int j=0 ; j < NUM_LINE ; j++) {
            	result[j] += digitsToString[j][intDigit];
                
                // 마지막 문자가 아니라면 " " 삽입
                if(i < inputDigit.length() -1 ) {
                	result[j] += " ";
                }
            }
        }
        return result;
    }
}
반응형