본문 바로가기
CodeSignal

Add Border

by Doromi 2023. 12. 5.
728x90
반응형

문자로 이루어진 직사각형 행렬이 주어지면, 이 행렬 주위에 별표(*) 테두리를 추가하는 문제입니다.

 

picture = ["abc",
           "ded"]

 

이라면, 출력은 다음과 같아야 합니다:

 

["*****",
 "*abc*",
 "*ded*",
 "*****"]

 

여기서 첫 번째 행과 마지막 행에는 모든 열에 *가 포함되고, 나머지 행은 맨 앞과 맨 뒤에 *가 붙은 형태로 테두리가 형성됩니다.

즉, 주어진 행렬의 각 행의 앞과 뒤에 *를 추가하여 새로운 행렬을 생성하면 됩니다.

 

string[] solution(string[] picture) {
    char[] ch = picture[0].ToCharArray();
    int len = ch.Length;
    char[] border = new char[len+2];
    string[] ret = new string[picture.Length+2];
    for(int i = 0;i<len+2;i++){
        border[i] = '*';
    }
    string borderString = new string(border);
    ret[0] = borderString;
    for(int i = 0;i<picture.Length;i++){
        ch = picture[i].ToCharArray();
        List<char> li = new List<char>(ch);
        li.Insert(0,'*');
        li.Add('*');
        string result = new string(li.ToArray());
        ret[i+1] = result;
    }
    ret[picture.Length+1] = borderString;
    return ret;
}

 

문자열로 이루어진 배열을 입력받아 해당 배열의 주위에 * 테두리를 추가하는 함수입니다. 함수 내부에서는 다음과 같은 작업이 이루어집니다.

border 배열을 생성하고 모든 요소를 *로 초기화합니다. (len+2 크기의 배열)
border 배열을 이용하여 borderString을 생성합니다.
결과를 저장할 ret 배열을 picture 배열의 길이보다 2 크게 생성합니다.
ret 배열의 첫 번째 요소에는 borderString을 저장합니다.
picture 배열의 각 요소를 순회하면서 맨 앞과 맨 뒤에 *를 추가한 후, 그 결과를 ret 배열에 저장합니다.
ret 배열의 마지막 요소에는 다시 borderString을 저장합니다.
최종적으로 ret 배열을 반환합니다.
이 코드를 통해 주어진 picture 배열의 주위에 * 테두리가 추가된 새로운 배열이 생성됩니다.
728x90
반응형

'CodeSignal' 카테고리의 다른 글

arrayChange  (0) 2023.12.09
Are Similar?  (2) 2023.12.06
reverseInParentheses  (0) 2023.12.03
alternating Sums  (2) 2023.12.03
Sort by Height  (0) 2023.12.02