본문 바로가기
[Developer]/ProblemSolving

[CodeSignal] Add Border

by 해피빈이 2019. 8. 17.

이번 문제 또한 이해하기 쉬운 개념으로 이루어진 문제이다.

역시 인트로!

 

후후

 

5일간 연속 수행!

 

문제

Given a rectangular matrix of characters, add a border of asterisks(*) to it.

직사각형 문자의 매트릭스가 주어질 때, asterisk 심볼로 된 테두리를 그려라.

 

주어진 테스트

1

Input: picture: ["abc", "ded"]

Expected Output: ["*****", ""*abc*", "*ded*", "*****"]

2

Input: picture: ["a"]

Expected Output: ["***", ""*a*", "***"]

3

Input: picture: ["aa", "**", "zz"]

Expected Output: ["****", ""*aa*", "****", "*zz*", "****"]

4

Input: picture: ["abcde", "fghij", "klmno", "pqrst", "uvwxy"]

Expected Output: ["*******", "*abcde*", "*fghij*", "*klmno*", "*pqrst*", "*uvwxy*", "*******"]

5  

Input: picture: ["wzy**"]

Expected Output: ["*******", "*wzy***", "*******"]

 

나의 해답

fun addBorder(picture: MutableList<String>): MutableList<String> {
    var resultList = mutableListOf<String>()
    var lenString = picture[0].length
    var lenArr = picture.size
    var tempStr: String
    
    for (row in -1..lenArr) {
        if((row == -1) or (row == lenArr)) {
            tempStr = ""
            for (star in 1..(lenString+2)) {
                tempStr += "*"
            }
            resultList.add(tempStr)
        } else {
            resultList.add("*"+picture[row]+"*")
        }
    }
    
    return resultList
}

 

느낀점

이번 문제는 for loop를 돌릴 때, range를 -1로 시작 값을 정할 수 있다는 점을 알았다는 것 하나와, 배열의 길이, 배열 내 문자열의 길이를 측정하는 방법이 다르다는 특징을 이용한 것 하나, 마지막으로 MutableList의 element를 하나 더할 때, 그 안의 String은 더하기를 이용하여 내부 구성한 뒤, 추가가 가능하다는 점을 알게 된 것이다.

이제는 조금씩 익숙해져 간다는 느낌이 든다.

 

 

반응형

'[Developer] > ProblemSolving' 카테고리의 다른 글

[CodeSignal] alternatingSums  (0) 2019.08.17
[CodeSignal] reverseInParentheses  (0) 2019.08.16

댓글