[프로그래머스] 배열 두 배 만들기

Jamong·2023년 1월 4일
0

코딩테스트 입문
Day 4 - 2023.01.04


문제 설명

정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성하라.

제한 사항

  1. numbers의 원소가 -10,000보다 크거나 같고 10,000보다 작거나 같아야한다.
  2. numbers의 길이가 1보다 크거나 같고 1,000보다 작거나 같아야 한다.

문제 풀이

for.swift

func solution(_ numbers: [Int]) -> [Int] {
    // 제한 사항
    guard 1...1000 ~= numbers.count else {
        return []
    }
    
    // 문제 풀이
    var answer: [Int] = []
    
    for num in numbers {
    	answer.append(num*2)
    }

    return answer
}
map.swift

func solution(_ numbers: [Int]) -> [Int] {
    // 제한 사항
    guard 1...1000 ~= numbers.count else {
        return []
    }
    
    // 문제 풀이
    var answer: [Int] = []
    answer = numbers.map({ $0 * 2 })

    return answer
}

먼저 제한 사항은 guard문을 이용하여 설정하였고 2가지 방식으로 문제를 해결했다.

For-in으로 문제를 해결한 방식은 solution함수에 들어온 numbers의 array들을 For in으로 하나씩 꺼내서 곱하기 2를 한 후 answer에 넣었다.

보다 편한 방식의 고차함수 map을 이용하는 방법으로도 해결해보았다.

numbers의 array에 map메소드를 이용하여 (요소 * 2)를 하여 answer에 넘겨주게 했다.


고차함수

먼저 고차함수를 설명하자면,

고차함수는 다른 함수를 전달인자로 받거나 함수실행의 결과를 함수로 반환하는 함수를 말한다.

Swift 라이브러리에서는 고차함수인 map, filter, reduece 등을 지원하기 때문에 쓸 수 있다.

Map

map은 데이터를 변형하고자 할 때 사용된다.

기존 데이터를 변경하여 새로운 컨테이너를 만드는데 용이하다. (For-in 구문과 큰 차이는 없음)

For-in 대신에 map을 이용하면 코드의 간결성, 재사용 용이, 컴파일러 최적화에 좋다.

profile
새해 목표 : 1일 1 깃, 블로그, 프로그래머스 2문제

0개의 댓글