오늘 풀어볼 문제는 287번이고 58.1%의 성공률을 보입니다. 며칠 전에 풀었던 문제와 굉장히 비슷하네요. hyerios.tistory.com/219 저번 문제는 중복되는 숫자가 있는지 여부를 판단해야 했다면, 이번 문제는 어떤 숫자가 중복되는지를 리턴해주면 됩니다. 문제를 살펴보겠습니다. nums 정수 배열이 주어지면 반복되는 오직 한 숫자가 있고 그걸 리턴해주면 됩니다. 아래 주어진 예제를 살펴봅시다. 하나의 중복된 숫자를 찾아서 리턴해주면 됩니다. 이전에 풀었던 방식인 딕셔너리를 이용해 문제를 풀어보겠습니다. class Solution { func findDuplicate(_ nums: [Int]) -> Int { var dict = [Int: Int]() for i in nums { if dic..
중복 제거에 대한 알고리즘을 풀어보려 합니다. 중복을 제거하는 방법에 대해서 여러 가지가 존재해서 여러가지 방법을 사용해서 문제를 해결하겠습니다. 오늘 풀 문제는 217번이고 쉬운 난이도고 57%의 성공률을 보이네요. 그렇게 어렵지는 않은 문제인 것 같아요! 먼저 문제를 살펴보겠습니다. 정수형 배열 nums가 주어지고 값이 배열에 적어도 두 번 나타나면 참을 리턴하고 모든 숫자가 고유하다면 거짓을 반환합니다. 즉 중복되는 게 있으면 바로 참을 리턴해주면 됩니다. 1번 예시를 보면 1이 중복되니 참을 리턴해줍니다. 2번 예시를 보면 모든 숫자가 중복되지 않아서 거짓을 리턴해줍니다. 3번 예시를 보면 1이 중복되고 3이 중복되고 4가 중복되고 2가 중복되어 참을 리턴해줍니다. 생각나는 방법이 3가지 있었는데..
소수의 정의는 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수입니다. 저한테 누가 소수를 판별하는 코드를 짜보라고 하면 아래와 같이 짤 것 같아요. func isPrimeNumber(n: Int) -> Bool { guard n > 1 else { return false } for i in 2.. Int { var next = prime + 1 while next [Bool] { var flags = Array(repeating: true, count: max + 1) flags[0] = false flags[1] =..
오늘도 IDE 없이 푸는 연습을 해보았습니다. 문제가 조금이라도 어려워지면 디버깅이 필요해서 IDE 없이 푸는 게 어렵더라고요. 그래서 차근차근 연습하려 합니다. 오늘 풀 문제는 230번이고 중간 난이도고 62.8%의 성공률을 보이네요. Kth Smallest Element in a BST인데 (이진 탐색 트리) BST가 BTS로 보이는 거..ㅎㅎ뭐지 문제를 살펴봅시다. 이진 탐색 트리의 루트와 k가 주어지면 트리에서 k번째로 작은 걸 리턴해주면 됩니다. 예시를 보면 이해가 확 갈 겁니다요. 제가 푸려는 방법은 중위 순회를 하면서 배열에 값을 넣고 배열에서 k번째를 리턴해주는 방법으로 풀어보려 합니다. 그리고 문제에서는 아래와 같이 노드에 대한 구현이 주어집니다. public class TreeNode ..
좋아하는 유투버가 라이브 스트리밍으로 Leetcode 알고리즘을 푸시던데 그것도 IDE 없이 풀더라구요. 우와 나도 IDE 없이 풀어야겠다 하면서 찾게 된 문제가 요 문제입니다. 344번 문제이며, 70.5% 난이도는 당연히 이지ㅋ 문제를 살펴봅시다. 문자열을 뒤집는 함수를 작성해주세요. 인풋 문자열은 문자 배열 char []로 제공됩니다. 다른 배열에 추가적인 공간을 할당하지 마세요. O(1) 추가적인 메모리로 in place하게 수정해야 합니다. 예제를 살펴봅시다. 주어진 문자 배열을 뒤집어주면 됩니다. class Solution { func reverseString(_ s: inout [Character]) { s.reverse() } } 이렇게 좋은 함수를 사용 안 하면 섭섭하지라고 생각해서 요 ..
오늘은 208번 Implement Trie문제를 풀어보겠습니다. 난이도는 중간이고 성공률은 52.1%네요. 일주일에 몇 개씩 풀고 있는데 이 문제가 첫 번째 페이지의 마지막 문제였어요. 물론 번호 왼쪽에 체크가 아닌 물음표 표시도 꽤 보이네요. 시도는 했으나 실패했던 문제도 있어서 다시 풀어봐야 하지만 하기 싫은 언젠가는 풀겠지.. 화이팅 문제를 풀기 전에 트라이에 대한 개념을 정리해보려 합니다. 트라이는 탐색 트리의 일종이며, 트리 자료구조입니다. 문자열 검색을 빠르게 해 주기로 유명합니다. 노드의 모든 자손은 노드에 연관된 문자열의 공통 접두사를 공유하며, 루트는 빈 문자열에 연관됩니다. 문자열에 한 문자만 넣고 다음 문자는 자식 노드에서 찾도록 합니다. 즉 문자열은 세로로 저장되게 됩니다. 문자열이..
오늘은 200번 Number of Islands문제를 풀어보겠습니다. 난이도는 중간 난이도며 성공률은 49%로 꽤 높습니다. 문제는 아래와 같습니다. m * n의 2차원 배열 grid이 주어지고 1은 땅이고 0은 물이며, 섬의 개수를 리턴해줘야 합니다. 아래와 같은 예시를 살펴보겠습니다. 1이 땅이고 0이 물이니 섬을 개수를 세기 위해서 1의 시작점을 봅니다. 1로만 이루어져 있고 0에 둘러싸여 있으면 섬이라고 생각하면 됩니다. 섬만 표시하다면 아래와 같이 3개의 섬이 있고 정답으로 3을 리턴해주면 됩니다. 코드를 살펴보겠습니다. 저는 전형적인 방법 DFS로 풀었습니다. import Foundation /// 200. Number of Islands let xArr = [1,0,-1,0] let yArr..
알고리즘 문제를 풀다가 좋은 솔루션을 배우게 되어 포스팅하려 합니다. 오늘은 포스팅할 문제는 189번이고 난이도는 중간 난이도입니다. 문제를 살펴봅시다. 배열이 주어지면 배열을 오른쪽으로 k 단계씩 회전합니다. 여기서 k는 음수가 아닙니다. - 가능한 많은 해결책을 찾아보세요. 이 문제를 해결하는 방법은 적어도 3가지 존재합니다. - 너는 인플레이스로 공간 복잡도 O(1)로 처리할 수 있니 제약은 아래와 같습니다. 예제를 살펴보겠습니다. 아래 코드는 제가 처음 풀었던 방식입니다. func rotate(_ nums: inout [Int], _ k: Int) { for _ in 0.. 0 && k > 0 else { return } let k = k % nums.count guard k != 0 else {..
- Total
- Today
- Yesterday
- 문자열
- swift5
- 애니메이션
- 책 추천
- ARC
- Deep learning
- RX
- 책
- leetcode
- objective-c
- ReactiveX
- 스위프트UI
- 독서
- Animation
- Algorithm
- iOS SwiftUI
- 스위프트
- swiftUI
- objc
- 책 후기
- 머신러닝
- 딥러닝
- 알고리즘
- wwdc
- SWIFT
- rxswift
- stanford SwiftUI
- string
- ios
- Xcode
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |