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 |