분류 전체보기

Language/Swift

Swift - 기본 데이터 타입

기본 데이터 타입의 종류 Bool Int, UInt Float, Double Character, String 1. Bool true, false만을 값으로 가지는 타입이나 C언어나 다른 언어에서 사용했던 것처럼 1을 true, 0을 false로 생각하고 사용하면 컴파일 에러가 발생한다. var boolA = true boolA = 1 //error 2. Int, UInt Int : 정수 타입. 현재는 기본적으로 64비트 정수형이다. UInt : 양의 정수 타입. 현재는 기본적으로 64비트 양의 정수형이다. var intA = -10 intA = 10.1 //error var uIntB: UInt = 1 uIntB = -1 //error Int형에는 당연히 실수형을 할당할 수 없고, UInt형에는 당연히 ..

Language/Swift

Swift - 변수, 상수

1. 변수 먼저 변수는 var 키워드를 사용해 선언한다. var a: Int = 0 var a1 = 0 var varStr = "값 변경이 가능" varStr = "Hello" var name : String name = "Kim" ㄱ. 변수 이름과 타입, 그리고 값까지 모두 작성해 선언할 수 있다. ㄴ. 값의 타입이 명확하다면 타입을 생략하고 선언할 수 있다. ㄷ. 추후 다른 값을 할당할 수 있다. ㄹ. 변수를 선언해두고 나중에 값을 할당할 수도 있다. 2. 상수 먼저, 상수는 let 키워드를 사용해 선언한다. let b: Int = 1 let b1 = 1 let letStr: String = "값 변경이 불가" letStr = "Hello" //error let nickName: String nick..

Language/Swift

Swift - 명명법, 콘솔 로그, 문자열 보간법

오늘은 야곰님의 Swift 기초 강의를 부스트코스에서 수강하고 정리해보는 글을 써보려한다. 1. 명명법 다른 언어를 배울 땐 네이밍 컨벤션(Naming Convention) 이런 말도 들었던 것 같은데 정확하진 않지만, 함수, 메소드, 변수, 상수(function, method, variable, constant)에는 Camel Case로 이름을 작성하고 타입(Type : class, struct, enum, extension ...)에는 Upper Camel Case로 이름을 작성한다. 그런데 사실 나는 Upper Camel Case라는 용어보단 Pascal Case가 더 익숙하다. Java와 Kotlin을 배울 때 가르쳐주신 교수님이 Pascal Case라고 알려주셨기 때문이다. 구글에 검색해보니 둘..

프로그래머스

가운데 글자 가져오기 스위프트(Swift)

이번엔 코틀린으론 쉽게 풀었던 가운데 글자 가져오기 문제를 풀어봤다. 야곰님 부스트코스 강의를 들으며 하나씩 풀어보고 있는데 코틀린에서 문자열 템플릿을 사용한 것처럼 여기서는 문자열 보간법을 사용해 풀어보았다. 문제 오죽 쉬웠으면 내가 프로그래머스에서 가장 먼저 풀어본 문제인가 싶다. 하지만, 스위프트로 풀기엔 코틀린보다 까다로웠다. 코틀린에서는 String에서의 index를 정수로 가져왔는데 Swift에서는 같은 방식으로 불러올 수 없었다. 풀이 if-else 구문을 사용해 문자열의 길이가 짝수인지 홀수인지 먼저 검사하고 짝수라면 중앙의 2글자, 홀수라면 정중앙의 1글자만 가져오면 된다. 일단, 문자 하나를 인덱스를 통해 가져오려면 코틀린처럼 s[index]와 같은 형식은 불가능했기 때문에 다른 함수를..

프로그래머스

나머지가 1이 되는 수 찾기 스위프트(Swift)

오늘은 전에 풀었던 문제의 재탕이다. 왜 이런 쓸데없는 짓을 하냐고 할 수도 있지만 나름 이유가 있었다. 추후, 따로 글을 작성해보겠다.. 문제 풀이 가장 앞에서 말했듯이 이미 코틀린으로 한 번 풀었던 문제지만 그대로 Swift언어로 작성해보았다. 먼저, 기존에 쓰던 코틀린과 달리 for문을 사용할 때 조건식에 괄호가 필요없다. 게다가, 코틀린에서는 for문의 실행문이 1줄이라면 중괄호를 생략할 수 있었지만 Swift는 무조건 중괄호가 필요했다. 생각보단 언어가 어색하다. 그래도 React Native를 접해본 경험은 있어 어색하지 않으리라 생각했는데 React Native에 관심이 없어서 그랬는지.. 암튼 조금 친해질 시간이 필요한 것 같다.

프로그래머스

시저 암호 코틀린(Kotlin)

오늘 풀어본 문제는 보자마자 문자형을 바탕으로 해결하면 되겠다는 생각이 들었다. 문제 C언어를 배울 당시 아스키 코드에서 대문자는 65부터 90까지, 소문자는 97부터 122까지의 번호였다. 이와 유사하게 유니코드에서도 숫자는 약간 다르지만 대문자, 소문자끼리 연속된 번호를 사용 중이었다. 하지만, 위의 2줄은 사실 큰 의미가 없었다.. isUpperCase(), isLowerCase() 메소드로 문자 하나가 대문자인지 소문자인지 구별할 수 있기 때문이다. 풀이 리턴될 answer 변수에 주어진 s의 0번 인덱스부터 각 문자의 대소문자 여부를 검사하고 n만큼 민 문자를 더해주었다. 그리고, 만약 문자에 띄어쓰기가 나오면 answer 변수에도 똑같이 띄어쓰기를 더해주었다.

프로그래머스

정수 내림차순으로 배치하기 코틀린(Kotlin)

오늘은 정렬 기능을 사용해야하는 문제였다. 문제 이전 문제들을 풀때 사용했던 방식을 가져와 일단 n을 MutableList에 하나씩 각 자리의 수를 추가해주었다. 그렇게 완성된 MutableList를 내림차순으로 정렬하려고 찾아보았더니 먼저 sort() 메소드를 통해 오름차순으로 정렬하고 reverse() 메소드로 역순 정렬을 할 수 있었다. 이렇게 내림차순으로 완성한 MutableList를 비어있는 String 변수에 0번 인덱스부터 차례대로 추가해주었고 이를 Long타입으로 변환하여 리턴될 answer 변수에 대입해주었다. 풀이 println 주석은 만든 MutableList가 내림차순까지 정렬이 되었는지 보기 위해 작성해보았다.

프로그래머스

하샤드 수 코틀린(Kotlin)

오늘 해결한 문제는 전에 풀었던 문제 중 겪었던 에러를 또 한 번 겪게 되어 조심해야겠다...는 생각을 하게 해준 문제이다. 문제 먼저 x를 한자리씩 떼어 덧셈을 해야하므로 String형으로 변경한 후 그 길이만큼 반복하며 다른 변수에 자릿수 합을 저장했다. 이 때, 저번에 문제를 풀며 겪었던 문제를 다시 겪게 되었는데 정수형 변수에 자릿수 합을 저장하려 했지만 String으로 변경한 x 변수의 각 자리는 Char형이기 때문에 해당하는 유니코드 값이 저장되었다. 풀이 이 코드에서 문제가 되었던 부분이 바로 for문에서 실행된 문장이었다. tempSum이라는 변수에 자릿수 합을 저장해야 했는데 xToString[i].toInt()를 += 연산자를 통해 tempSum에 더해주면 숫자의 유니코드 값이 더해졌다..

프로그래머스

약수의 개수와 덧셈 코틀린(Kotlin)

이번에 풀어본 문제는 의식의 흐름대로 풀다보니 코드가 길어진 감이 없지 않아 있는데... 아직 줄여쓰는 것이 익숙치 않다. 문제 중첩된 for문과 그 안에서 조건문을 같이 사용하다보니 반복문과 조건문 또는 다른 실행문의 순서가 조금 헷갈리긴 했지만 천천히 '의식의 흐름'대로 되짚어 가며 풀었다. 풀이 가장 먼저 주어지는 두 정수 사이의 수만큼 반복하기 위해 left에서 right까지 반복하도록 조건을 설정했고 각각의 수마다 약수의 개수를 판단하기 위해 해당하는 수를 1부터 1씩 증가시키며 해당하는 수까지 나머지 연산을 통해 약 찾을 때마다 cnt 변수를 1씩 증가시켜 약수의 개수를 저장해두고 반복문이 끝나면 cnt 변수를 통해 약수의 개수가 짝수이면 리턴될 answer 변수에 더해주고 홀수이면 뺄셈을 해..

프로그래머스

부족한 금액 계산하기 코틀린(Kotlin)

이번엔 오랜만에 문제를 풀어봤는데 상당히 간단한 문제였다. 그 동안 구글 플레이에 올렸던 앱 하나에 별점 1점을 받아 해당 문제를 해결하고 다른 고민거리를 생각하다 보니 며칠이 훌쩍 지나버렸다. 아무튼 다시 문제 풀이로 들어가보겠다. 풀이 먼저 price와 count를 이용해 지불해야할 총 금액을 계산했다. 그리고 지불해야할 금액과 가지고 있는 금액을 비교해 금액이 부족하면 부족한 금액을 리턴하고, 금액이 모자라지 않으면 0을 리턴하도록 코드를 짜보았다. 풀이 tempMoney 변수를 Long 타입으로 만든 이유는 리턴이 Long 타입인데 아래의 if-else 문에서 리턴될 answer 변수에 Int타입끼리 연산 후 대입하게 되면 Type mismatch 에러가 발생하기 때문이다.

BonusTrack02.dev
'분류 전체보기' 카테고리의 글 목록 (19 Page)