본문 바로가기

Develop/Coding Test

코딩테스트 입문 (feat. Day 13 문자열, 배열, 사칙연산, 수학, 조건문)

13일차 스탬프

1.  컨트롤 제트

Q. 숫자와 "Z"가 공백으로 구분되어 담긴 문자열이 주어집니다. 문자열에 있는 숫자를 차례대로 더하려고 합니다. 이 때 "Z"가 나오면 바로 전에 더했던 숫자를 뺀다는 뜻입니다. 숫자와 "Z"로 이루어진 문자열 s가 주어질 때, 머쓱이가 구한 값을 return 하도록 solution 함수를 완성해보세요.

func solution(_ s:String) -> Int {
    var result: Int = 0
    var preValue: Int = 0
    s.components(separatedBy: " ").forEach {
        if $0 == "Z" {
            result -= preValue
        } else {
            preValue = Int($0)!
            result += preValue
        }
    }
    return result
}

 

A. 결과를 저장하는 result와 이전값을 저장하는 preValue를 생성한다.

그리고 전달 받은 s를 components(separatedBy:)를 활용해 배열로 변환한 후, forEach로 순회하면서

"Z"일 경우 result에서 이전 값 preValue를 빼고 아닌 경우 preValue에 현재 값을 저장하고 result에 더해준다.

그 후, 반복문이 끝나면 result를 반환하여 해결했다.

2. 배열 원소의 길이

Q. 문자열 배열 strlist가 매개변수로 주어집니다. strlist 각 원소의 길이를 담은 배열을 return하도록 solution 함수를 완성해주세요.

func solution(_ strlist:[String]) -> [Int] {
    return strlist.map { $0.count }
}

 

A. 전달 받은 strlist를 고차함수 map을 통해 순회하면서 각 원소의 길이를 담은 배열을 반환하여 해결했다.

3. 중복된 문자 제거

Q. 문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요.

func solution(_ my_string:String) -> String {
    var result: [String] = []
    my_string.forEach {
        if !result.contains(String($0)) {
            result.append(String($0))
        }
    }
    return result.joined()
}

 

A. 전달 받은 my_string을 순회하면서 조건문을 통해

결과를 저장하는 배열에 현재 문자가 포함되지 않으면 추가하도록 한 후,

결과 배열을 joined()를 통해 문자열로 변환한 값을 반환하여 해결했다.

4. 삼각형의 완성조건 (1)

Q. 선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다. 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다. 삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.

func solution(_ sides:[Int]) -> Int {
    let sortedArray = sides.sorted()
    return sortedArray[0] + sortedArray[1] > sortedArray[2] ? 1 : 2 
}

 

A. 전달 받은 sides를 정렬한 배열에서

첫 번째, 두 번째를 더한 값이 세 번째 값보다 크면 1, 작으면 2를 반환하여 해결했다.


오늘은 문제를 푸는데 어려움도 없었고

다른 사람들의 풀이를 봐도 내 풀이와 유사했다.

꾸준히 풀다보니 벌써 진행 현황이 50퍼가 넘었다ㅎㅎ

내일도 화이팅!