Swift 코딩 테스트 | 알고리즘 \U0026 코딩 테스트 초보자 공감 100% 285 개의 가장 정확한 답변

당신은 주제를 찾고 있습니까 “swift 코딩 테스트 – 알고리즘 \u0026 코딩 테스트 초보자 공감 100%“? 다음 카테고리의 웹사이트 https://you.tfvp.org 에서 귀하의 모든 질문에 답변해 드립니다: https://you.tfvp.org/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 동빈나 이(가) 작성한 기사에는 조회수 63,990회 및 좋아요 1,038개 개의 좋아요가 있습니다.

swift 코딩 테스트 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 알고리즘 \u0026 코딩 테스트 초보자 공감 100% – swift 코딩 테스트 주제에 대한 세부정보를 참조하세요

#코딩테스트 #공감 #알고리즘
알고리즘 공부할 때 공감되는 내용을 담은 개그 영상입니다 ㅎ-ㅎ 재미로 봐주세요!
프로그래머스에서 나에게 맞는 코딩테스트 강의를 확인해 보세요!
▶ 보러 가기: https://programmers.co.kr/pages/2022-codingtest?utm_source=youtube\u0026utm_medium=video\u0026utm_campaign=2022coding\u0026utm_content=collabo
——————————————————————————
나동빈 인스타그램: https://www.instagram.com/dongbin_na/
———————- 사용한 음악 리스트 ———————–
오정석 – Bouble Gum (공유마당)
The Great North Sound Society – Two Little Bums
Infraction – Inspirational Corporate
Infraction – Fast Evil
lukrembo – cheese
——————————————————————————

swift 코딩 테스트 주제에 대한 자세한 내용은 여기를 참조하세요.

[iOS] swift 알고리즘, 코딩테스트에 필요한 tip 정리 – velog

코딩테스트를 스위프트로 준비하면서 자주 검색하거나 사용하는 문법들을 정리해보려 합니다. 계속 추가하고 수정할 예정입니다.

+ 여기에 표시

Source: velog.io

Date Published: 10/22/2021

View: 2114

[Swift]Swift 요약 정리 /초보자를 위한 코테 / 코딩테스트 / 요약 …

[Swift]Swift 요약 정리 /초보자를 위한 코테 / 코딩테스트 / 요약 / 총 정리 / 기초 정리 / 코테 입문. 찬히히 2021. 9. 2. 17:52 …

+ 여기에 자세히 보기

Source: chanhhh.tistory.com

Date Published: 8/26/2021

View: 3801

Swift – 테크 피드 – 프로그래머스 커리어

Swift. iOS 개발자 면접 질문 리스트. 클래스의 새로운 인스턴스를 만들 때 ARC는 … 요즘들어 많은 기업들이 iOS 직군에 대해서 코딩테스트 진행 시, Swift언어로 …

+ 여기에 자세히 보기

Source: career.programmers.co.kr

Date Published: 1/2/2021

View: 6910

Swift 언어 코딩테스트, 입문 전 유용한 팁 정리 – MungGu Story

안녕하세요 iOS Developer, 멍구입니다. 요즘들어 많은 기업들이 iOS 직군에 대해서 코딩테스트 진행 시, Swift언어로 사용 언어를 제한하는 경우 …

+ 더 읽기

Source: 0urtrees.tistory.com

Date Published: 12/25/2022

View: 5824

[테크캐스트] iOS 개발자 코딩테스트 – 야곰 아카데미

Swift. 취업준비. 안녕하세요, 야곰 아카데미의 cozy 입니다. 오늘은 지난 3월 19일에 처음으로 열린. ‘야곰 테크캐스트’의 ‘iOS 개발자 코딩테스트’ …

+ 여기를 클릭

Source: www.yagom-academy.kr

Date Published: 11/10/2022

View: 8156

[Swift] 프로그래머스 연습 문제(Level 1) : 문자열을 정수로 바꾸기

구독 대상. 기본 알고리즘을 코딩 테스트 문제를 통하여 학습하고 싶으신 분; 취업 및 이직을 준비하고 계신 개발자; Swift를 통하여 코딩 테스트 …

+ 더 읽기

Source: joycestudios.tistory.com

Date Published: 7/16/2021

View: 4350

코딩테스트 준비관련 질문 – 인프런 | 질문 & 답변

링크 공유: 코딩테스트 준비관련>> 파트 내용에서 앨런님은 파이썬으로 코딩테스트를 공부했다고 하셨는데, iOS개발을 하며 Swift가 아닌 파이썬으로 …

+ 여기를 클릭

Source: www.inflearn.com

Date Published: 12/3/2022

View: 1514

[Swift 코딩 테스트] – 무말랭이 떡볶이 존맛, 신전 로제도

[Swift 코딩 테스트] … 3. 일반 플젝 실행하듯이 cmd + R 단축키로 동작합니다. swift 코테 화이팅해서 돈많벌 합시다~!.

+ 여기에 더 보기

Source: ksk9820.tistory.com

Date Published: 8/18/2021

View: 9136

Top 36 Swift 코딩 테스트 Quick Answer – Chewathai27

Summary of article content: Articles about [iOS] swift 알고리즘, 코딩테스트에 필요한 tip 정리 코딩테스트를 스위프트로 준비하면서 자주 검색하거나 …

+ 더 읽기

Source: chewathai27.com

Date Published: 11/28/2022

View: 6050

[취준] iOS 신입 개발자 코딩테스트 보는 꿀팁

저는 기존에 파이썬으로 알고리즘을 시작했었는데요, iOS 개발 공부를 시작하고 나서 부터는 불편함이 있더라도 무조건 Swift로 문제를 풀었습니다. 보통 …

+ 더 읽기

Source: ios-developer-storage.tistory.com

Date Published: 7/1/2022

View: 3781

주제와 관련된 이미지 swift 코딩 테스트

주제와 관련된 더 많은 사진을 참조하십시오 알고리즘 \u0026 코딩 테스트 초보자 공감 100%. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

알고리즘 \u0026 코딩 테스트 초보자 공감 100%
알고리즘 \u0026 코딩 테스트 초보자 공감 100%

주제에 대한 기사 평가 swift 코딩 테스트

  • Author: 동빈나
  • Views: 조회수 63,990회
  • Likes: 좋아요 1,038개
  • Date Published: 2022. 4. 2.
  • Video Url link: https://www.youtube.com/watch?v=2y8kpIR8f-s

[iOS] swift 알고리즘, 코딩테스트에 필요한 tip 정리

코딩테스트를 스위프트로 준비하면서 자주 검색하거나 사용하는 문법들을 정리해보려 합니다. 계속 추가하고 수정할 예정입니다.

기본 입력 받기

var input = readLine ( ) ! var input = Int ( readLine ( ) ! ) !

“1 2 3 4 5″와 같은 공백 있는 숫자 입력 받기

var nums = readLine ( ) ! . split ( separator : ” ” ) . map { Int ( $ 0 ) ! } var nums = readLine ( ) ! . components ( separatedBy : ” ” ) . map { Int ( $ 0 ) ! } array . append ( ( file . readInt ( ) , file . readInt ( ) ) )

“12345”와 같은 공백 없는 숫자를 배열로 입력 받기

var nums = Array ( readLine ( ) ! ) . map { Int ( String ( $ 0 ) ) ! } var nums = Array ( readLine ( ) ! ) . map { String ( $ 0 ) } let nums = [ file . readInt ( ) , file . readInt ( ) ]

입력값 시간초과 -> fread의 swift 버전 (라이노님 FileIO)

github

보통 입출력이 10~20만 줄 넘어가면 쓰는걸 추천

xcode 터미널에서 엔터가 아닌 EOF를 입력해야 입력 완료가 된다. 터미널에서 값을 입력한 뒤 제일 마지막에 Ctrl + D를 입력하면 출력값이 나온다.

subString

let startIdx : String . Index = str . index ( str . startIndex , offsetBy : 3 ) var result = String ( str [ startIdx . . . ] ) let endIdx : String . Index = str . index ( str . startIndex , offsetBy : 3 ) var result = String ( str [ . . . endIdx ] )

문자열에 특정 문자 바꾸기

let str = “ung!chun!” let str2 = str . replacingOccurrences ( of : “!” , with : “?” ) print ( str2 )

개행없는 print

print ( “Hello” , terminator : “” )

forEach

let nums : [ Int ] = [ 1 , 2 , 3 , 4 ] nums . forEach { print ( $ 0 ) }

절대값

abs ( – 11 )

제곱

let value = 3.0 pow ( value , 2 )

자릿수 더하기

String ( n ) . map { String ( $ 0 ) } . reduce ( 0 ) { $ 0 + Int ( $ 1 ) ! }

배열 요소에 접근하기

var array = [ 1 , 2 , 3 , 4 , 5 ] array [ 1 . . . 3 ]

배열에 요소 추가하기

var array = [ 1 , 2 , 3 ] array . append ( 4 ) array . append ( contentsOf : [ 5 , 6 , 7 ] )

배열에 원하는 값 index 찾아서 삭제하기

if let index = array . firstIndex ( where : { $ 0 == value } ) { array . remove ( at : index ) }

1차원 배열 선언

let arr = [ Int ] ( ) let arr = Array ( repeating : 0 , count : 5 ) let arr = [ Int ] ( repeating : 0 , count : 5 )

2차원 배열 선언

let arr = [ [ Int ] ] ( ) let arr = Array ( repeating : Array ( repeating : 0 , count : 3 ) , count : 5 ) let arr = [ [ Int ] ] ( repeating : [ Int ] ( repeating : 0 , count : 3 ) , count : 5 )

map

var string = [ “1” , “2” , “3” , “4” ] string . map { Int ( $ 0 ) ! }

filter

var array = [ 1 , 2 , 3 , 4 ] array . filter { $ 0 % 2 == 0 }

reduce

var array = [ 1 , 2 , 3 , 4 ] array . reduce ( 0 , + )

joined()

var brands = [ “Dell” , “HP” , “Apple” ] var result1 = brands . joined ( ) var result2 = brands . joined ( separator : ” ” ) var result3 = brands . joined ( separator : “, ” )

flatMap(), compactMap()

let array1 = [ 1 , nil , 3 , nil , 5 , 6 , 7 ] let flatMapTest1 = array1 . flatMap { $ 0 } let compactMapTest1 = array1 . compactMap { $ 0 }

1차원 배열에서는 둘 다 동일한 결과를 나타내지만 Swift 4.1 부터는 1차원 배열에서 nil을 제거하고 옵셔널 바인딩을 하고싶을때는 flatMap 말고 compactMap을 사용하라고 한다.

let array2 : [ [ Int ? ] ] = [ [ 1 , 2 , 3 ] , [ nil , 5 ] , [ 6 , nil ] , [ nil , nil ] ] let flatMapTest2 = array2 . flatMap { $ 0 } let compactMapTest2 = array2 . compactMap { $ 0 }

flatMapt과 compactMap은 nil을 제거하지않고 1차원 배열일때만 nil 제거

flatMap은 2차원배열을 1차원배열로 flatten 하게 만들어주는 반면, compactMap은 1차원 배열로 만들지 않습니다. -> 2차원 배열을 1차원으로 만들때는 flatMap 사용

let array2 : [ [ Int ? ] ] = [ [ 1 , 2 , 3 ] , [ nil , 5 ] , [ 6 , nil ] , [ nil , nil ] ] let flatMapTest2 = array2 . flatMap { $ 0 } . compactMap { $ 0 }

flatMap 으로 flatten 하게 만들고 compactMap 으로 처리하면 편하게 2차원 배열을 옵셔널 바인딩 한 1차원 배열로 출력 가능

let array3 = [ [ [ 1 ] , [ 2 , 3 ] , [ 4 , 5 , 6 ] , [ 7 , 8 , 9 , 10 ] ] ] let flatMapTest3 = array3 . flatMap { $ 0 } let doubleflatMapTest3 = flatMapTest3 . flatMap { $ 0 }

3차원 배열도 flatMap 2번 사용하면 flatten 하게 처리 가능

Set

정렬되지 않은 컬렉션

중복 허용 x

해시를 통해 값을 저장해서 배열에 비해 검색 속도가 빠르다. (저장되는 자료형은 Hashable 프로토콜 준수해야함)

var tempSet : Set < Int > = [ ] var tempSet = Set < Int > ( ) var tempSet : Set < Int > = [ 1 , 2 , 5 , 0 ] let count : Int = tempSet . count let isEmpty : Bool = tempSet . isEmpty tempSet . contains ( 1 ) tempSet . contains ( 10 ) tempSet . insert ( 1 ) tempSet . insert ( 10 ) tempSet . update ( with : 1 ) tempSet . update ( with : 120 ) tempSet . remove ( 1 ) tempSet . remove ( 10 ) tempSet . removeAll ( )

dictionary

var dict : [ String : Int ] = [ : ] var dict = [ String : Int ] ( ) let count : Int = dict . count let isEmpty : Bool = dict . isEmpty var dict = [ “height” : 165 , “age” : 100 ] let height = dict [ “height” ] let weight = dict [ “weight” ] dict [ “weight” ] = 100 dict [ “height” ] = 200 dict [ “weight” ] = nil dict [ “height” ] = nil dict . removeAll ( ) dict . keys dict . keys . sorted ( ) dict . values dict . values . sorted ( ) dict . sorted ( by : { $ 0 . value > $ 1 . value } ) dict . filter ( condition ) var v = [ [ Int ] ] ( ) var xDic = [ Int : Int ] ( ) xDic [ v [ i ] [ 0 ] ] let x = xDic . filter { $ 0 . value < 2 } . keys ans . append ( contentsOf : xDic . values . filter { $ 0 < 2 } ) 2차원 배열 정렬하기 var arr = [ [ 0 , 3 ] , [ 1 , 9 ] , [ 2 , 6 ] ] let sortedArray = arr . sorted ( by : { $ 0 [ 1 ] < $ 1 [ 1 ] } ) let sortedArray = arr . sorted ( by : { $ 0.1 < $ 1.1 } ) print ( sortedArray ) init (repeating: count: ) let watermelon4 = String ( repeating : "수박" , count : 4 ) print ( watermelon4 ) let liar = Array ( repeating : false , count : 5 ) print ( liar ) 배열안에 담긴 숫자만큼 일일이 print하면 매번 print하는 것도 상당히 느리기때문에 시간초과 되는 경우가 많은데 String - init ( repeating: count: ) 로 한번에 만들어서 String에 저장해서 출력하면 시간초과를 막을 수 있다. -> 수 정렬하기 3 참고

var answer = “” answer + = String ( repeating : ” \( value )

” , count : countValue ) answer + = String ( repeating : ” \( value ) ” , count : countValue ) answer + = String ( repeating : ” \( value ) ” , count : countValue ) print ( answer )

최대공약수, 최소공배수

func GCD ( max : Int , min : Int ) – > Int { let remain = max % min if remain == 0 { return min } else { return GCD ( max : min , min : remain ) } } func LCM ( max : Int , min : Int ) – > Int { return max * min / GCD ( max : max , min : min ) }

heap / 우선순위 큐

[Swift]Swift 요약 정리

Line 단위로 읽어오기.

Line단위로 읽어오는데, 공백(Space)으로 구분되어 있는 입력

ex) Input = 1 2 3 4

1 2 let nums = readLine() ! .split(seperator: ” ” ) // String.SubSequence Type [map]으로 커버 가능 let nums = readLine() ! .components(seperatedBy: ” ” ) // String Type [import Foundation] 필수.

입력을 split을 사용하여 받아온다면 mapping으로 변수를 사용할 수 있다.

다른 방법으로는 components를 사용하는 방법이 있는데, components는 foundation의 instance method이므로 이를 사용하려면 import Foundation 해주어야 한다.

Int값으로 바로 읽어오기

1 let n: Int = Int (readLine() ! ) ! Maping할때 Int값으로 바로 읽어오기

String.subsequence -> Int 형변환 보다

String.subsequence -> String -> Int 형변환이 더 빠르다. (입력에서 시간초과 난다 싶으면 사용)

1 let numb: [ Int ] = readLine() ! .split(separator: ” ” ).map { Int ( String ($0)) ! }

배열(Array)

Swift 언어 코딩테스트, 입문 전 유용한 팁 정리

728×90

반응형

안녕하세요 iOS Developer, 멍구입니다. 🤗

요즘들어 많은 기업들이 iOS 직군에 대해서 코딩테스트 진행 시, Swift언어로 사용 언어를 제한하는 경우가 많아지는 추세인데요. 그런만큼, Swift언어로 코딩테스트 준비를 하는 분들이 늘어나고 있는 것 같습니다.

그래서 이참에, 제가 Swift언어로 코딩테스트를 준비해오면서 느꼈던, 입문할때 알아두면 좋은 사항들을 정리해보려고 합니다. 바로 시작해보겠습니다! 🤗

Swift언어를 지원하는 코딩테스트 플랫폼

프로그래머스

Programmers Logo

국내 대기업에서 사용하는 코딩테스트 플랫폼은 대부분이 부분적으로 Swift언어를 지원합니다.

그 중 국내 대기업에서 단연 가장 많이 사용되는 플랫폼은 프로그래머스입니다. 프로그래머스는 쿠팡, 네이버, 카카오, 기타 IT대기업 공채에서 가장 많이 활용하는 코딩테스트 플랫폼 중 하나입니다. 국내에서 가장 많이 활용되는 플랫폼인 만큼 대부분의 알고리즘 문제에서 Swift를 지원합니다. 다만, 일부 DP 등의 문제는 Swift을 지원하지 않는 점 참고하시기 바랍니다.

가장 많이 활용되는 코딩테스트 플랫폼인 만큼, 프로그래머스에서 고득점킷과 1~3단계 문제는 가능한 많이 풀어두시는 것을 추천드립니다.

해커랭크, 코딜리티, LeetCode

HackerRank, Codility page

그 다음으로는 코딩테스트 플랫폼, 코딜리티와 해커랭크가 있습니다. 이 두 플랫폼은 해외 플랫폼인데요. 네이버, 카카오 등의 수시채용에 지원 시 코딩테스트 플랫폼으로 보실 수 있습니다.

해커랭크, 코딜리티에서는 프로그래머스 처럼 연습문제를 단계별로 풀 수 있으며, 거대한 커뮤니티도 형성되어 있어 코딩테스트 준비에 좋은 플랫폼이라고 생각합니다. 당연하게도 Swift 언어를 지원합니다.

LeetCode 또한 해외 플랫폼으로, 커뮤니티도 크고 연습용으로 좋은 다양한 문제들이 많이 있습니다. 또한 대부분의 연습문제가 Swift언어를 지원하고 있으니 활용하시면 좋을 것 같습니다.

구름(goorm)

goorm 로고

구름 플랫폼은 국대 소프트웨어 마에스트로 출신 수료생 분께서 만든 코딩테스트 플랫폼인데요.

NHN공채, 토스, 소프트웨어마에스트로, 등에서 해당 플랫폼으로 코딩테스트를 진행한 적이 있습니다.

구름 또한 프로그래머스 처럼 연습문제를 제공하니 참고하시면 좋을 것 같습니다. 프로그래머스 처럼 연습문제에 따라 Swift를 지원하는 경우도, 지원하지 않는 경우도 있습니다.

구름 연습문제는 백준처럼 입력까지 직접 구현해야 하는 경우가 있다는 특징이 있습니다.

백준(BOJ)

백준 알고리즘 사이트 로고

백준 알고리즘 사이트는 사실 코딩테스트만의 목적을 가진 플랫폼은 아니지만, 국내 현존하는 알고리즘 사이트 중 가장 풍부한 문제 리소스를 보유하고 있어 좋은 연습환경을 제공합니다.

프로그래머스의 고득점 킷 문제를 푼 뒤 이와 관련된 문제를 복습삼아 더 풀고 싶을 때, 백준알고리즘 사이트의 분류별 문제를 찾아 풀 수 있습니다. Swift 언어 또한 5.0 이상의 환경을 지원하고 있어 유용합니다.

다만, Swift언어를 사용하는 사람이 적어선지, 일부 백준 알고리즘 문제에서는 Swift언어에 대한 시간 보정이 되어있지 않는 경우가 종종 있으니 참고하시기 바랍니다.

저는 프로그래머스 고득점 킷 > 프로그래머스 2단계까지 풀기 > 프로그래머스 3단계 풀기 > 백준 ~ LeetCode, 해커랭크, 코딜리티를 활용하면서 코딩테스트를 준비했던 기억이 있는데요.

본인의 페이스, 목표에 맞게 위에 상기한 코딩테스트 플랫폼을 골고루 활용하시면 좋을 것 같습니다. 👍🏼

String 타입 처리에 신경쓴다.

Swift의 문자열을 다룰 때, C++의 문자열과 같은 개념으로 접근하시면 안됩니다.

애초에 기본적으로 String은 일반적인 정수형 인덱스로 첨자접근이 가능한 배열(랜덤 접근 컬렉션)과 다른 구조인 양방향컬렉션으로 되어있습니다.

String.Index 타입으로 첨자접근 시 그 시간 복잡도는 O(N)가 됩니다. 또한 String 타입의 길이를 체크하는 count 프로퍼티의 경우도 그 시간 복잡도는 O(N)이 됩니다.

왜 이렇게 되는지는 제가 이전에 작성한 포스팅을 참고바랍니다. ▼

이러한 문자열 처리 상 비효율성을 보완하기 위해 상황에 따라 Array 타입으로 변경(String -> [Chracter] 혹은 [String])해서 첨자접근을 활용할 수 있습니다.

Array타입은 C++와 유사하게 첨자접근이 가능하며, 접근 간 복잡도는 O(1)이기 때문이죠. 특이 문자열 내의 문자 접근이 다수 발생한다면 문자열 처리 방식에 따른 효율성은 크게 차이가 날 수 있습니다.

String 내에 있는 문자의 타입은 Character라는 점도 참고해서 Character, String의 특성과 기능도 숙지해두는것이 좋습니다.

또한 대다수의 코딩테스트 문제에서 문자열 처리 문제는 빈출대상이기 때문에 더욱 신경쓰는 것이 좋습니다.

강제언래핑을 활용한다.

강제언래핑은 스위프트 언어에서 String? 타입과 같은 옵셔널 타입을 강제로 벗겨내어 사용할 때 쓰는 것이죠.

실무에서는 해당 값이 없을경우(nil) 런타임 에러를 야기하기에 지양하는 문법이지만, 알고리즘 문제에서 보통 입력값은 구체적인 값이 주어지고 그에 따른 결과값을 반환하도록 요구하는 경우가 많습니다.

이런 경우에는 ! 를 통해 강제 언레핑을 해서 코드양을 줄이고, 시간관리를 하는 것이 좋을 수 있습니다. (다 풀고 여유가 된다면 옵셔널 바인딩을 통한 안전한 접근방식을 고려해볼 수도 있겠지만)

위의 경우, 입력값을 숫자로 변환하는 과정인데요.

문제에서 무조건 숫자가 입력으로 들어온다고 한다면, 강제언래핑을 통해 readLine()으로 반환받는 String? 타입을 -> String 타입으로, String 타입을 -> Int 타입으로 변환하는 작업을 단 한줄로 해결할 수 있습니다. (입력이 더욱 자주 발생한다면 해당 입력을 클로져로 정의해서 재사용할 수도 있습니다.)

예를들면, Swift에서 입력을 받을때 사용하는 readLine()은 String? 타입을 반환하는데요. 이는 입력 받지 않을 경우, nil을 반환하기 때문입니다. 만약 문제에서 무조건 입력이 있음을 보장한다면, let input = readLine()! 과 같이 단 한줄로 입력값을 받을 수 있습니다.

readLine()으로 알고리즘 문제 입력받는 방법▼

Array, Set, Dictionary + 그 외 자료구조 다루는 연습을 한다.

스위프트의 3대장(?) 자료구조는 Array, Set, Dictionary가 있습니다. 이들에 대한 숙지를 해두는 것은 필수겠죠.

또한 스위프트의 단점이라면, Heap / Stack / Queue 등을 지원하지 않는 다는 점이 있는데요. 이런 부분도 스위프트 언어 상에서 어떻게 대응할 지 고민해두는 것이 좋습니다.

– 가령, Heap은 Swift에서 기본적으로 제공하지 않으므로, 대신 이진탐색을 활용하거나 직접 구현해야 합니다.

– Stack은 배열의 append(), removeLast()를 활용하는 식으로(push/pop) 구현할 수 있습니다.

– Queue는 일반 배열과 커서 값을 활용해서 Queue에 근사한 성능을 유도할 수도 있습니다.

배열큐로 실제 큐와 유사하게 활용하는 예시▼

이런 부분을 스위프트 특성에 맞게 준비해 두는 것은 Swift언어로 코딩테스트를 하는 분들에게 필수가 되겠습니다.

클로져(고차함수), 메서드를 활용한다.

Swift언어는 객체지향 프로그래밍 뿐만 아니라 함수형 프로그래밍을 지향하는 멀티 패러다임 언어입니다.

그런만큼, 다양한 고차함수, 메서드를 지원하며, 이들을 활용하면 보다 직관적이로 간결하게 문제를 풀 수 있습니다. 그러므로, 고차함수의 활용에도 관심을 갖는 것이 좋습니다.

reversed(), sort(), sorted(), enumerated(), reduce(into:), map(), compactMap(), split(separator:), components(separatedBy:) 등 다양한 고차함수, 메서드들을 자주 접하고, 활용 및 연습하시면 좋습니다.

Swift 언어 코딩테스트 입문 전 미리 알아두면 좋을 유용한 팁을 정리해봤습니다.

그 외에 기타 의견이나 질문이 있으면 언제든 댓글 남겨주시면 되겠습니다. 즐거운 하루 되세요! 👩🏻‍💻

728×90

반응형

[Swift] 프로그래머스 연습 문제(Level 1) : 문자열을 정수로 바꾸기

실제 코딩테스트의 문제를 통하여 알고리즘 분석과 코딩 능력을 향상시킵니다.

#. 구독 대상

기타 알고리즘과 문제 해결 능력에 대해서 관심이 있는 모든 개발자분

코딩 테스트에 대한 거부감을 없애기 위하여 기초부터 하나씩 공부해보고 싶으신 분

Swift를 통하여 코딩 테스트 문제를 살펴보고 이해를 하고 싶으신 분

취업 및 이직을 준비하고 계신 개발자

기본 알고리즘을 코딩 테스트 문제를 통하여 학습하고 싶으신 분

참고 사항

본 코딩 테스트 문제에 대한 설명 및 해결 방안은 최적의 답이 아닐 수 있습니다.

본 강의에서 지향하는 목표는 바로 특정 문제에 대한 최적의 해결 방법을 찾기보다는 특정한 문제에 대해서 충분히 이해할 수 있고 다양한 방법을 통하여 해결하는 방법을 찾고 향상시키는데 그 목적이 있습니다.

좀 더 좋은 알고리즘 및 코드가 있으시다면 언제든지 본 게시물의 댓글을 통해서 제시해주시면 감사하겠습니다.

코딩테스트 준비관련 질문 – 인프런

<<링크 공유: 코딩테스트 준비관련>> 파트 내용에서 앨런님은 파이썬으로 코딩테스트를 공부했다고 하셨는데,

iOS개발을 하며 Swift가 아닌 파이썬으로 코딩테스트를 준비하신 이유를 알 수 있을까요?

저도 iOS개발자를 목표로 하고 있는데, 어떤 언어로 코딩테스트를 준비해야하는지 궁금하여 여쭤봅니다.

[Swift 코딩 테스트]

728×90

1. Xcode > Create a new Xcode project > macOS > Command Line Tool

2. 언어는 Swift 선택

3. 일반 플젝 실행하듯이 cmd + R 단축키로 동작합니다.

swift 코테 화이팅해서 돈많벌 합시다~!

728×90

Top 36 Swift 코딩 테스트 Quick Answer

대기업 IT직군 코딩테스트 합격을 위한 현실적이고 직관적인 공부 순서

대기업 IT직군 코딩테스트 합격을 위한 현실적이고 직관적인 공부 순서

Read More

Read More

Read More

티스토리 뷰

Swift언어를 지원하는 코딩테스트 플랫폼

String 타입 처리에 신경쓴다

강제언래핑을 활용한다

Array Set Dictionary + 그 외 자료구조 다루는 연습을 한다

클로져(고차함수) 메서드를 활용한다

티스토리툴바

Read More

See also

See also Top 41 감나무 에 감 이 주렁주렁 달려 있는 꿈 The 194 Latest Answer

Read More

문자열 – 가운데 수 찾기

Set – 숫자외 포함 유무

String – Int 변환 시

String 배열에서 특정 문자열을 찾고 싶을 때

문자열 에서 첫글자 없앨 때

문자열 정렬 && 문자열 첫글자 없애기

for loop 반대로 iterate

struct는 아닌데 몇 가지 변수 포함하는 배열과 정렬

Dictionary

소숫점 올림 반올림

태그

관련글

댓글1

공지사항

최근글

인기글

최근댓글

태그

전체 방문자

티스토리툴바

Read More

See more articles in the same category here: Chewathai27.com/to/blog.

코딩테스트를 스위프트로 준비하면서 자주 검색하거나 사용하는 문법들을 정리해보려 합니다. 계속 추가하고 수정할 예정입니다.

기본 입력 받기

var input = readLine ( ) ! var input = Int ( readLine ( ) ! ) !

“1 2 3 4 5″와 같은 공백 있는 숫자 입력 받기

var nums = readLine ( ) ! . split ( separator : ” ” ) . map { Int ( $ 0 ) ! } var nums = readLine ( ) ! . components ( separatedBy : ” ” ) . map { Int ( $ 0 ) ! } array . append ( ( file . readInt ( ) , file . readInt ( ) ) )

“12345”와 같은 공백 없는 숫자를 배열로 입력 받기

var nums = Array ( readLine ( ) ! ) . map { Int ( String ( $ 0 ) ) ! } var nums = Array ( readLine ( ) ! ) . map { String ( $ 0 ) } let nums = [ file . readInt ( ) , file . readInt ( ) ]

입력값 시간초과 -> fread의 swift 버전 (라이노님 FileIO)

github

보통 입출력이 10~20만 줄 넘어가면 쓰는걸 추천

xcode 터미널에서 엔터가 아닌 EOF를 입력해야 입력 완료가 된다. 터미널에서 값을 입력한 뒤 제일 마지막에 Ctrl + D를 입력하면 출력값이 나온다.

subString

let startIdx : String . Index = str . index ( str . startIndex , offsetBy : 3 ) var result = String ( str [ startIdx . . . ] ) let endIdx : String . Index = str . index ( str . startIndex , offsetBy : 3 ) var result = String ( str [ . . . endIdx ] )

문자열에 특정 문자 바꾸기

let str = “ung!chun!” let str2 = str . replacingOccurrences ( of : “!” , with : “?” ) print ( str2 )

개행없는 print

print ( “Hello” , terminator : “” )

forEach

let nums : [ Int ] = [ 1 , 2 , 3 , 4 ] nums . forEach { print ( $ 0 ) }

절대값

abs ( – 11 )

제곱

let value = 3.0 pow ( value , 2 )

자릿수 더하기

String ( n ) . map { String ( $ 0 ) } . reduce ( 0 ) { $ 0 + Int ( $ 1 ) ! }

배열 요소에 접근하기

var array = [ 1 , 2 , 3 , 4 , 5 ] array [ 1 . . . 3 ]

배열에 요소 추가하기

var array = [ 1 , 2 , 3 ] array . append ( 4 ) array . append ( contentsOf : [ 5 , 6 , 7 ] )

배열에 원하는 값 index 찾아서 삭제하기

if let index = array . firstIndex ( where : { $ 0 == value } ) { array . remove ( at : index ) }

1차원 배열 선언

let arr = [ Int ] ( ) let arr = Array ( repeating : 0 , count : 5 ) let arr = [ Int ] ( repeating : 0 , count : 5 )

2차원 배열 선언

let arr = [ [ Int ] ] ( ) let arr = Array ( repeating : Array ( repeating : 0 , count : 3 ) , count : 5 ) let arr = [ [ Int ] ] ( repeating : [ Int ] ( repeating : 0 , count : 3 ) , count : 5 )

map

var string = [ “1” , “2” , “3” , “4” ] string . map { Int ( $ 0 ) ! }

filter

var array = [ 1 , 2 , 3 , 4 ] array . filter { $ 0 % 2 == 0 }

reduce

var array = [ 1 , 2 , 3 , 4 ] array . reduce ( 0 , + )

joined()

var brands = [ “Dell” , “HP” , “Apple” ] var result1 = brands . joined ( ) var result2 = brands . joined ( separator : ” ” ) var result3 = brands . joined ( separator : “, ” )

flatMap(), compactMap()

let array1 = [ 1 , nil , 3 , nil , 5 , 6 , 7 ] let flatMapTest1 = array1 . flatMap { $ 0 } let compactMapTest1 = array1 . compactMap { $ 0 }

1차원 배열에서는 둘 다 동일한 결과를 나타내지만 Swift 4.1 부터는 1차원 배열에서 nil을 제거하고 옵셔널 바인딩을 하고싶을때는 flatMap 말고 compactMap을 사용하라고 한다.

let array2 : [ [ Int ? ] ] = [ [ 1 , 2 , 3 ] , [ nil , 5 ] , [ 6 , nil ] , [ nil , nil ] ] let flatMapTest2 = array2 . flatMap { $ 0 } let compactMapTest2 = array2 . compactMap { $ 0 }

flatMapt과 compactMap은 nil을 제거하지않고 1차원 배열일때만 nil 제거

flatMap은 2차원배열을 1차원배열로 flatten 하게 만들어주는 반면, compactMap은 1차원 배열로 만들지 않습니다. -> 2차원 배열을 1차원으로 만들때는 flatMap 사용

let array2 : [ [ Int ? ] ] = [ [ 1 , 2 , 3 ] , [ nil , 5 ] , [ 6 , nil ] , [ nil , nil ] ] let flatMapTest2 = array2 . flatMap { $ 0 } . compactMap { $ 0 }

flatMap 으로 flatten 하게 만들고 compactMap 으로 처리하면 편하게 2차원 배열을 옵셔널 바인딩 한 1차원 배열로 출력 가능

let array3 = [ [ [ 1 ] , [ 2 , 3 ] , [ 4 , 5 , 6 ] , [ 7 , 8 , 9 , 10 ] ] ] let flatMapTest3 = array3 . flatMap { $ 0 } let doubleflatMapTest3 = flatMapTest3 . flatMap { $ 0 }

3차원 배열도 flatMap 2번 사용하면 flatten 하게 처리 가능

Set

정렬되지 않은 컬렉션

중복 허용 x

해시를 통해 값을 저장해서 배열에 비해 검색 속도가 빠르다. (저장되는 자료형은 Hashable 프로토콜 준수해야함)

var tempSet : Set < Int > = [ ] var tempSet = Set < Int > ( ) var tempSet : Set < Int > = [ 1 , 2 , 5 , 0 ] let count : Int = tempSet . count let isEmpty : Bool = tempSet . isEmpty tempSet . contains ( 1 ) tempSet . contains ( 10 ) tempSet . insert ( 1 ) tempSet . insert ( 10 ) tempSet . update ( with : 1 ) tempSet . update ( with : 120 ) tempSet . remove ( 1 ) tempSet . remove ( 10 ) tempSet . removeAll ( )

dictionary

var dict : [ String : Int ] = [ : ] var dict = [ String : Int ] ( ) let count : Int = dict . count let isEmpty : Bool = dict . isEmpty var dict = [ “height” : 165 , “age” : 100 ] let height = dict [ “height” ] let weight = dict [ “weight” ] dict [ “weight” ] = 100 dict [ “height” ] = 200 dict [ “weight” ] = nil dict [ “height” ] = nil dict . removeAll ( ) dict . keys dict . keys . sorted ( ) dict . values dict . values . sorted ( ) dict . sorted ( by : { $ 0 . value > $ 1 . value } ) dict . filter ( condition ) var v = [ [ Int ] ] ( ) var xDic = [ Int : Int ] ( ) xDic [ v [ i ] [ 0 ] ] let x = xDic . filter { $ 0 . value < 2 } . keys ans . append ( contentsOf : xDic . values . filter { $ 0 < 2 } ) 2차원 배열 정렬하기 var arr = [ [ 0 , 3 ] , [ 1 , 9 ] , [ 2 , 6 ] ] let sortedArray = arr . sorted ( by : { $ 0 [ 1 ] < $ 1 [ 1 ] } ) let sortedArray = arr . sorted ( by : { $ 0.1 < $ 1.1 } ) print ( sortedArray ) init (repeating: count: ) let watermelon4 = String ( repeating : "수박" , count : 4 ) print ( watermelon4 ) let liar = Array ( repeating : false , count : 5 ) print ( liar ) 배열안에 담긴 숫자만큼 일일이 print하면 매번 print하는 것도 상당히 느리기때문에 시간초과 되는 경우가 많은데 String - init ( repeating: count: ) 로 한번에 만들어서 String에 저장해서 출력하면 시간초과를 막을 수 있다. -> 수 정렬하기 3 참고

var answer = “” answer + = String ( repeating : ” \( value )

” , count : countValue ) answer + = String ( repeating : ” \( value ) ” , count : countValue ) answer + = String ( repeating : ” \( value ) ” , count : countValue ) print ( answer )

최대공약수, 최소공배수

func GCD ( max : Int , min : Int ) – > Int { let remain = max % min if remain == 0 { return min } else { return GCD ( max : min , min : remain ) } } func LCM ( max : Int , min : Int ) – > Int { return max * min / GCD ( max : max , min : min ) }

heap / 우선순위 큐

[취준] iOS 신입 개발자 코딩테스트 보는 꿀팁

비전공자 + 문과 + 개발 6개월 = 코테 합격 가능!?

와 다풀었다! 근데 다른 사람들은 1줄에 풀었네,,? T^T

안녕하세요 이웃님들

오늘은 iOS 신입으로 구직활동을 하면서 코딩테스트를 응시했던 경험을 나눠보려고 합니다!

위에도 언급했듯이 저는 비전공자고, 문과출신이고, 개발경력은 6~9개월 정도입니다.

기존 포스팅에서는 제가 코딩테스트에 자신이 없고 과제 전형을 선호한다고 언급했었는데요.

지금은 오히려 코딩테스트를 선호하게 되었어요! 속전속결!

그래서 공부했던 방법과 iOS 개발자에게 요구하는 코딩테스트의 일반적인(?) 수준에 대해서 이야기를 해보려고 해요.

참고하실 사항은 저는 천상계 개발자도 아니고, 엄청 똑똑한(?) 천재 개발자랑은 거리가 먼 사람입니다.

걍 말하는 감자 정도?입니다.

지원했던 회사들

카카* 계열사, 코인거래소, 커머스플랫폼 회사, 배달 플랫폼 회사 등 다양한 도메인의 iOS 주니어 개발자로 지원을 했습니다. 보통 서류가 아주 나쁘지만 않으면(?) 코딩 테스트가 있는 전형의 회사들은 대부분 코테는 응시하게 해줍니다. 그래서 코딩테스트를 여러군데 볼 수 있었습니다. 보통 2-3문제에서 많게는 5-6개까지 주는 경우도 있었어요. 응시시간도 3문제 1시간인곳도 있고, 2문제 180분을 주는 곳도 있습니다. 진짜 다~~~ 너무너무 다른데 공통점도 있었습니다. 다 풀고 테스트 케이스 통과를 해도 풀이 자체가 구렸는지 떨어지는 곳도 있었고, 3문제중에 1.5개 정도만 맞았는데 다음 전형으로 갈 수 있었던 케이스도 있습니다. 근데 대체로 다 푸는걸 목표로 해야하는 것 같긴 합니다. 커머스플랫폼 코테에서는 주관식 문제, 주어진 코드를 보완해서 기능 구현하는 문제도 있었습니다.

iOS 개발자 코딩테스트 문제의 수준

3중 for문을 써서라도 풀 수 있습니다. 피라미드 그려서 푸는 이 학생처럼…

iOS 개발자를 뽑을때 코딩테스트를 보는 이유가 무엇일까요. 잘은 모르겠지만 아마 기본적인 컴퓨팅적 사고가 가능한지를 보는 것 같습니다. 그래서 아주아주 난해하고 올림피아드 문제같은 경우 보다는 평이하고, 특정 알고리즘을 잘 몰라도 생각해서 풀 수 있는 문제가 많은 것 같습니다. 그래서 당장 전투용으로 코딩테스트를 준비하신다면, 그리고 네카라쿠배당토가 아니라면..! 그리디, 정렬, DFS, BFS정도만 훑어보고 문제를 막 풀면 3개가 나오면 2개 정도는 무조건 풀 수 있도록 출제가 되는 것 같습니다.

다들 잘 풀면 뭘로 합불이 나뉠까

코딩테스트 합격하고 나서 면접때 코테 문제에 대해서 질문을 보통 주시는데요. 그때 보면 테스트 케이스는 통과했더라도 더 간결하고 좋은 알고리즘을 제시해주시는 경우가 많습니다. 쉬운 문제를 풀게 되는 경우, 시간복잡도, 공간복잡도를 어떻게 하면 줄일지에 대해서 고민을 많이 한 풀이를 기대하시는 것 같습니다! 당연한 말이긴 합니다.

언어 선택

저는 기존에 파이썬으로 알고리즘을 시작했었는데요, iOS 개발 공부를 시작하고 나서 부터는 불편함이 있더라도 무조건 Swift로 문제를 풀었습니다. 보통 C++이나 java정도는 선택할 수 있는 것 같긴 하지만 모든 시험이 언어 선택지를 주는 것이 아니고, 최근에는 대부분 Swift로 풀도록 권장하는 것 같습니다. iOS 개발자로 취업을 생각하신다면 Swift로 문제를 푸는 연습을 많이 해두시면 좋을 것 같습니다!

물론 Swift가 알고리즘 문제를 풀때 박터지는 부분도 있지만… String을 다루는 부분이나 Stack이 따로 없는 부분 같은 약점만 잘 보완을 하면 속도도 빠르고 파이썬이랑 비슷해서 편한 부분도 많으실겁니다! Swift 짱짱맨!

공부 방법

저는 정도대로 공부한게 아니고 취준을 하면서 2달동안 준비한거라서 대단한 공부를 한 것은 없지만, 책을 하나 보고 코테 응시를 많이 했습니다. 책은 나동빈의 이것이 코딩테스트다 를 챕터 순서대로 공부했고, 파이썬으로 되어있는 책이기 때문에 Swift로 먼저 풀어보고 답안과 비교하면서 공부했습니다. 챕터별로 예제가 3개정도 되는데 책을 다 보고 나면 어쨋든 프로그래머스에 있는 1단계 문제정도는 풀 수 있게 됩니다.

저는 사실 프로그래머스 1~2단계 문제를 다 풀고 응시한게 아니고 책 보고 공부한 뒤, 선 코테 후 공부를 했습니다. 갑자기 취준을 다시 하게 됐기 때문에 마음적으로 바빴던 것도 크고, 실전에서 급박하게(?) 고민을 하다보면 집중력이 좋아져서 그 다음에 비슷한 유형을 만나게 되면 생각이 잘 나는 장점이 있었습니다. 그런데 이 방법의 단점은 일단 한번 지원하고 코테에서 떨어지면 적어도 6개월 정도 뒤에 재지원이 가능하기 때문에 초반에 마구마구 코테를 봐버리면 실력이 단기간에 올라와도 재지원이 어렵기 때문에 그 회사는 거의 빠이빠이 하게 된다는 점입니다.

저처럼 후드리챱챱 빨리 하고싶은게 아니시라면 시간을 가지고 프로그래머스 고득점 1~2단계 문제는 다 풀어보시고 응시하시면 코테 통과 가능한 수준이 금방 되실거라고 생각합니다!

글을 마치며…

코테를 통과해도 사실 면접에서까지 다 붙어서 최종 오퍼를 받기란 쉽지가 않습니다..

게다가 비전공자라면 면접 뚫기가 또 힘듭니다. 저도 면접보면서 비전공자에 신입이라 회사입장에서도 리스크가 크다는 피드백을 들은 적이 많습니다… 그러나! 코테에서 좋은 평가를 받으면 신입이어도 3년차이상 구인 공고도 뚫을 수 있습니다. 그러니 일찍부터 코딩테스트 포기하지 마시고 가벼운 마음으로 시작해보셔요!

어쩌면 비전공자가 편견을 쉽게 부술 수 있는 전형이 코딩테스트 일지도 모르겠습니다. 기회라고 생각하고 열심히 풀어봅시다~~!!!

화이팅!!

키워드에 대한 정보 swift 코딩 테스트

다음은 Bing에서 swift 코딩 테스트 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 알고리즘 \u0026 코딩 테스트 초보자 공감 100%

  • 코딩테스트
  • 알고리즘
  • 코딩 개그
  • 개그 영상
  • 공감
  • 코딩 테스트 공감
  • 알고리즘 공감

알고리즘 #\u0026 #코딩 #테스트 #초보자 #공감 #100%


YouTube에서 swift 코딩 테스트 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 알고리즘 \u0026 코딩 테스트 초보자 공감 100% | swift 코딩 테스트, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment