반응형

Old_SWIFT(221012)/코딩테스트 8

행렬의 곱셈

안녕하세요. KataRN입니다. 오늘은 행렬의 곱셈에 대해서 알아보겠습니다. 행렬의 곱셈의 경우 행과 열을 곱해야되는데 필요할때마다 저는 돌려서 쓰는데 효율이 별로 안좋은것 같아서 효율좋은 코드를 남기려고합니다. 이건 제가 임의로 만든 코드인데 그냥 그럭저럭인것 같아요... func solution(_ arr1:[[Int]], _ arr2:[[Int]]) -> [[Int]] { var answer = Array(repeating: Array(repeating: 0, count: arr2[0].count), count: arr1.count) let arr3 = convertArr(arr2) for i in 0..

약수의 개수 구하기

안녕하세요. KataRN 입니다. 오늘은 약수의 개수를 구해보겠습니다. 사실 1부터 N까지의 숫자로 나눠서 나머지가 0인 것을 구하면 됩니다. 하지만 코딩테스트를 공부하면서 느낀게 다른 방법이 있으면 알아두는게 좋은것같아서 짧게나마 기록하고자 합니다. 제곱근에 소수점이 없으면 약수의 갯수가 홀수고 있으면 짝수입니다. 예제 : 프로그래머스 약수의 개수와 덧셈 (https://programmers.co.kr/learn/courses/30/lessons/77884) import Foundation func solution(_ left:Int, _ right:Int) -> Int { var answer = 0 for number in left...right{ if floor(sqrt(Double(number))..

글자 < - > 숫자 변환 UnicodeScalar() 다루기

안녕하세요. KataRN입니다. 오랜만에 글을 올리게 되었습니다. 일도 바빠지고 개인적인 프로젝트하느라 바빠서... 다시 마음을 다잡고 조금씩이라도 글을 올려보겠습니다. 오늘은 UnicodeScalar()에 대해 알아보겠습니다. 여러분 문자들을 숫자로 변환이 가능하다는 사실을 알고계신가요? 16진, 10진 등으로 변환이 가능합니다. 코딩테스트를 할때 많이 접하셨을겁니다. 저는 코딩테스트 외에도 Objective-C를 다룰때 종종 다뤘습니다. SDK가 Objective-C였는데 16진을 이용하고있어서 많이 봤습니다. 오늘은 코딩테스트를 기준으로 설명해보겠습니다. 영어 대문자는 65~90, 소문자는 97~122로 이루어져있습니다. 바꾸는 함수는 많은데(asciiValue(), UnicodeScalar()....

코딩테스트용 참고사전

안녕하세요. KataRN입니다. 자주 쓰지 않아서 잊어버리게 되는 함수들을 적어둘까합니다. 참고용입니다. 소수점 다루기 1. 반올림 : round() 2. 올림 : ceil() 3. 내림 : floor() floor(-3.453) // -4.0 floor(-3.658) // -4.0 4. 버림 : trunc() trunc(-3.453) // -3.0 trunc(-3.658) // -3.0 5. 특정 자리수 - 4번째 자리에서 반올림 let digit: Double = pow(10, 3) // 10의 3제곱 round(5.123123 * digit) / digit // 5.123 - 4번째 자리에서 올림 let digit: Double = pow(10, 3) // 10의 3제곱 ceil(5.123123 *..

순열과 조합

안녕하세요 KataRN입니다. 묻지도 따지지도 않고 순열과 조합이 필요한 경우가 있습니다. 그래서 오늘은 순열과 조합에 대해 알아보려고 합니다. 들리는 소문에 의하면 파이썬은 기본제공이 있다던데... swift는? 네네 없습니다... 또 서론이 길다구요? 네 코드보시죠 우선 순열입니다. func permute(_ nums: [Int], _ targetNum: Int) -> [[Int]] { var result = [[Int]]() var visited = [Bool](repeating: false, count: nums.count) func permutation(_ nowPermute: [Int]) { if nowPermute.count == targetNum { result.append(nowPermu..

소수 구하기

안녕하세요. KataRN입니다. 코테 문제를 풀다보면 소수를 구하는 문제가 많습니다. 보통 소수관련 문제가 나오면 효율성도 좋아야 되더라구요... 그리고 소수와 효율성하면 꼭 언급하는 이론이 있습니다. 그건 바로 '에라토스테네스의 체' 입니다. 소수를 하나하나 구하는것보다 아래의 그림처럼 소수의 배수를 제거하는것이 빠릅니다. 이를 포함하여 소수판별코드, 소수의개수, 소수구하기 등을 코드로 구현해봤습니다. 소수 판별 코드(swift) func isPrime(_ num: Int) -> Bool { if num == 0 { return false } if num < 4 { return num == 1 ? false : true } for i in 2...Int(sqrt(Double(num))) { if num..

최대공약수, 최소공배수 구하기

안녕하세요. KataRN입니다. 오늘은 최대공약수와 최소 공배수에 대해 알아보겠습니다. 최대공약수와 최소공배수에 대한 문제를 풀기 위해 코드를 작성했으나 전부 시간초과가 났습니다. 이건 답은 같아도 비효율적이기 때문입니다. 그래서 제가 내린 결론은 무조건 '유클리드 호제법을 이용하여 만들어야한다' 입니다. 유클리드 호제법이란? 유클리드 호제법은 2개의 자연수 또는 정식의 최대공약수를 구하는 알고리즘의 하나이다. 호제법이란 말은 두 수가 서로 상대방 수를 나누어서 결국 원하는 수를 얻는 알고리즘을 나타낸다. 최대공약수, 최소공배수 코드(swift) //최대공약수 func gcd(_ a: Int, _ b: Int) -> Int { if b == 0 { return a } else { return gcd(b,..

코딩테스트

안녕하세요 Kata입니다. 오늘부터 코딩테스트를 꾸준히 공부하려고 합니다. 저는 시간이 부족한게 가장 큰 단점입니다. 코테는 하루아침에 되는건 아닌것같아서 매일 3문제이상을 풀려고합니다.(난이도에 따라 다를수 있음..) 코테에 필요한 기술적인 내용만 작성할것입니다... 풀이는 없습니다... 목표는 아래와 같습니다. - 우선 툭치면 툭하고 나오도록 언어에 익숙해지자. - 같은 문제도 다양한 방법으로 풀 수 있도록 하자. 이상...

반응형