프로그래밍 27

Leetcode 2006 풀이(파이썬, 스위프트)

for문을 전체 길이-1 까지 돌리고 그 안에 2중 for문으로 i+1부터 전체길이까지 두 값의 차이가 k인 것들의 개수를 +해준다. 파이썬: class Solution: def countKDifference(self, nums: List[int], k: int) -> int: cnt = 0 for i in range(len(nums)-1): for j in range(i+1, len(nums)): if abs(nums[i]-nums[j])==k: # 차이의 절대값이 k일때 cnt+=1 # cnt 1증가 return cnt 스위프트: class Solution { func countKDifference(_ nums: [Int], _ k: Int) -> Int { var cnt = 0 for i in 0..

카테고리 없음 2022.02.07

leetcode 1281 풀이(파이썬, 스위프트)

모르는게 많아서 블로그에 많은걸 포스팅하게 된 문제... map과 reduce에 익숙해지자... (파이썬으론 익숙해서 쉽다 파이썬짱) 숫자를 이루는 숫자들을 다뤄야하기 때문에 숫자를 그 숫자를 이루는 숫자들의 배열로 만들었고 for문으로 모두 곱한것에서 더한것을 빼줬다. 스위프트: class Solution { func subtractProductAndSum(_ n: Int) -> Int { var a = String(n).map{Int(String($0))!} return a.reduce(1){$0*$1} - a.reduce(0){$0+$1} } } 파이썬: class Solution: def subtractProductAndSum(self, n: int) -> int: n=[x for x in str..

리트코드 풀이 2022.02.07

스위프트의 배열과 문자열 꿀팁들

공부하다가 스위프트의 배열과 문자열은 파이썬과 달라서 정리해 봅니다. 주의할 점 위주로 정리해 봤습니다. 스위프트에서 문자열을 배열로 바꾸는 법 여러가지가 있으니 코드로 소개해 드리겠습니다. 열거형: let str = "ABC" var arr = [Character]() for i in str { arr.append(i) } print(arr) // ["A", "B", "C"] Array생성자로 직접 변환하기: let str = "ABC" let arr = Array(str) print(arr) // ["A", "B", "C"] map 이용하기: let str = "ABC".map { (n: Character) -> Character in return n } let str = "ABC".map { $0 ..

swift 2022.02.07

스위프트 배열에 원소 삽입, 제거, 찾기, 포함

스위프트 언어의 문법은 파이썬 언어라고 발표 초창기에 알려졌었다고 할 정도로 스위프트의 문법은 파이썬과 비슷한 부분이 많다. 값 삽입 배열에 원소를 삽입할 때는 어떨까? 배열의 맨 뒤에 값을 추가하는 방법으로는 append(_:)를 사용한다. 이는 파이썬과 동일함으로 생략하겠다. 배열의 특정 위치에 값을 삽입하고 싶을 경우에는 insert(_:at:)을 사용하고 예를 살펴보면 먼저 파이썬의 경우 a = [1, 2, 3] a.insert(0,0) print(a) # [0, 1, 2, 3] 0번째 인덱스에 0 삽입 스위프트의 경우 var a = [1, 2, 3] a.insert(0, at:0) print(a) 가 같은 코드가 되겠다. 한번에 여러 요소들을 한꺼번에 삽입하고 싶을 때는 append(conten..

swift 2022.02.07

리트코드 771 풀이(파이썬, 스위프트)

stones문자열에 있는 문자가 jewel에 있으면 만들어둔 변수에 1을 더해줌 파이썬: class Solution: def numJewelsInStones(self, jewels: str, stones: str) -> int: jewels = [x for x in jewels] cnt=0 for i in range(len(stones)): if stones[i] in jewels: cnt+=1 return cnt 스위프트: class Solution { func numJewelsInStones(_ jewels: String, _ stones: String) -> Int { var a = 0 for s in stones where jewels.contains(s){ a+=1 } return a } }

리트코드 풀이 2022.02.06

Leetcode 1431 풀이(파이썬, 스위프트)

extraCandies를 캔디 배열 값에 더했을때 다른 수보다 작지 않을 수 있냐는 문제. max함수로 최대값을 미리 저장해 두고 포문을 돌리며 비교 스위프트: class Solution { func kidsWithCandies(_ candies: [Int], _ extraCandies: Int) -> [Bool] { var maxcan = candies.max() var a = [Bool]() for i in 0..= maxcan!{ a.append(true) } else{ a.append(false) } } return a } } 파이썬: class Solution: def kidsWithCandies(self, candies: List[int], extraCandies: int) -> List[bo..

리트코드 풀이 2022.02.06

Leetcode 1108 풀이(파이썬, 스위프트)

스위프트는 replacingOccurrences 메소드, 파이썬은 replace 메소드를 사용할 줄 아는지 묻는 문제. 물론 풀이는 다양할 수 있다. 스위프트: class Solution { func defangIPaddr(_ address: String) -> String { var a = address a = a.replacingOccurrences(of: ".", with: "[.]") return a } } 파이썬: class Solution: def defangIPaddr(self, address: str) -> str: address=address.replace(".","[.]") return address

리트코드 풀이 2022.02.05

Swift 고차함수 Map, Filter, Reduce

대표적인 고차함수로는 map, filter, reduce가 있다. 고차함수는 "다른 함수를 전달인자로 받거나 함수실행의 결과를 함수로 반환하는 함수"이다. MAP map은 데이터를 변형하고자 할 때 사용합니다. 기존 데이터를 변형하여 새로운 컨테이너를 만드는데, 기존 데이터는 변형되지 않습니다. 특히 map은 기존의 for-in 구문과 큰 차이가 없지만, map 사용시 다음과 같은 이점이 있습니다. 1. 코드의 간결성 2. 재사용 용이 3. 컴파일러 최적화 성능 좋음 map의 형태: array.map(Transform: T, throws -> T) for - in 구문과 비교해 보겠다. for - in: let array = [1, 2, 3, 4, 5] var xarray = [int]() for n i..

swift 2022.02.05