- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 코딩테스트
- programmers
- 디자인 패턴
- 스위프트
- 코테
- swift 코딩테스트
- 감성에세이
- 다트
- Algorithm
- 정렬알고리즘
- swift split
- Design Pattern
- 프로그래머스 레벨2
- 프로그래머스 level1
- sort
- rxswift
- 프로그래머스 swift
- swift
- 스위프트디자인패턴
- 프로그래머스
- 알고리즘
- coding test
- programmer
- datastructure
- 자료구조
- swift 알고리즘
- 정렬
- 디자인패턴
- dart
- 정렬 알고리즘
Bill Kim's Life...
[Swift] 프로그래머스 연습 문제(Level 1) : x만큼 간격이 있는 n개의 숫자 본문
[Swift] 프로그래머스 연습 문제(Level 1) : x만큼 간격이 있는 n개의 숫자
billnjoyce 2022. 2. 11. 11:27실제 코딩테스트의 문제를 통하여 알고리즘 분석과 코딩 능력을 향상시킵니다.
#. 구독 대상
- 기본 알고리즘을 코딩 테스트 문제를 통하여 학습하고 싶으신 분
- 취업 및 이직을 준비하고 계신 개발자
- Swift를 통하여 코딩 테스트 문제를 살펴보고 이해를 하고 싶으신 분
- 코딩 테스트에 대한 거부감을 없애기 위하여 기초부터 하나씩 공부해보고 싶으신 분
- 기타 알고리즘과 문제 해결 능력에 대해서 관심이 있는 모든 개발자분
참고 사항
본 코딩 테스트 문제에 대한 설명 및 해결 방안은 최적의 답이 아닐 수 있습니다.
본 강의에서 지향하는 목표는 바로 특정 문제에 대한 최적의 해결 방법을 찾기보다는 특정한 문제에 대해서 충분히 이해할 수 있고 다양한 방법을 통하여 해결하는 방법을 찾고 향상시키는데 그 목적이 있습니다.
좀 더 좋은 알고리즘 및 코드가 있으시다면 언제든지 본 게시물의 댓글을 통해서 제시해주시면 감사하겠습니다.
코딩 테스트 문제
먼저 오늘 살펴볼 문제에 대해서 먼저 살펴보겠습니다.
https://programmers.co.kr/learn/courses/30/lessons/12954
문제 설명
함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.
제한 조건
- x는 -10000000 이상, 10000000 이하인 정수입니다.
- n은 1000 이하인 자연수입니다.
입출력 예
x | n | answer |
2 | 5 | [2,4,6,8,10] |
4 | 3 | [4,8,12] |
-4 | 2 | [-4,-8] |
문제 분석
오늘 문제는 배수 관련 문제로서 두 정수를 입력받아 첫 번째 입력 정수를 기준으로 두 번째 입력 정수 횟수만큼 진행하여 x배수 값을 정수 배열로 구성하여 반환하는 문제입니다.
알고리즘
그렇다면 본 문제를 해결하기 위한 알고리즘을 하나씩 살펴보면 아래와 같습니다.
- 최종 결과를 반환할 정수형 배열를 선언한다.
- 주어진 시작 정수를 기준으로 입력된 횟수만큼 반복하여 결과 배열에 값을 하나씩 넣는다.
- 최종 결과 배열을 반환한다.
코드 설명
그렇다면 위의 알고리즘에 대해서 하나씩 살펴보면서 코드로 작성을 해보도록 하겠습니다.
- 최종 결과를 반환할 정수형 배열를 선언한다.
var array = [Int64]()
- 주어진 시작 정수를 기준으로 입력된 횟수만큼 반복하여 결과 배열에 값을 하나씩 넣는다.
for i in 1...n {
array.append(Int64(x*i))
}
- 최종 결과 배열을 반환한다.
return array
위의 코드들을 모두 조합하여 최종 코드를 완성하면 아래와 같습니다.
최종 코드
func solution(_ x:Int, _ n:Int) -> [Int64] {
var array = [Int64]()
for i in 1...n {
array.append(Int64(x*i))
}
return array
}
위의 방식과 다르게 Swift 만의 고차 함수 및 문법을 적절히 활용하여 한 줄로 표현하면 아래와 같은 코드로도 해당 문제를 풀 수 있습니다.
func solution(_ x:Int, _ n:Int) -> [Int64] {
return Array(1...n).map { Int64($0 * x) }
}
이상으로 오늘 제시한 문제에 대해서 분석 및 코드를 작성해 보았습니다.
감사합니다.
[참고 자료(References)]
[1] 프로그래머스 - x만큼 간격이 있는 n개의 숫자 : https://programmers.co.kr/learn/courses/30/lessons/12954
'CS(컴퓨터 과학) > Coding Test' 카테고리의 다른 글
[Swift] 프로그래머스 연습 문제(Level 1) : 음양 더하기 (0) | 2022.02.15 |
---|---|
[Swift] 프로그래머스 연습 문제(Level 1) : 직사각형 별찍기 (6) | 2022.02.14 |
[Swift] 프로그래머스 연습 문제(Level 1) : 행렬의 덧셈 (6) | 2022.02.07 |
[Swift] 프로그래머스 연습 문제(Level 1) : 핸드폰 번호 가리기 (6) | 2022.01.27 |
[Swift] 프로그래머스 연습 문제(Level 1) : 하샤드 수 (0) | 2022.01.25 |