오늘은 648번을 풀어보겠습니다. 중간 난이도고 61.0%의 성공률을 보입니다. 그럼 시작 영어에서는 root라는 개념이 있습니다. 이 루트 뒤에 successor가 따라와 더 긴 단어가 될 수 있습니다. 예를 들어 root인 an와 그 뒤에 successor other이 붙으면 새로운 단어 another이 됩니다. 루트들로 구성된 딕셔너리가 주어지고 공백에 따라 분리되는 단어로 구성된 sentence를 root로 바꿔 재구성을 하면 됩니다. 만약 successor가 하나 이상의 root와 교체될 수 있다면 가장 짧은걸 root로 사용하면 됩니다. 즉 sentence안에 successors들이 있는 거고 root로 바꿀 수 있으면 바꾸어 문장을 재구성을 하면 됩니다. 여러 개의 root로 바꿀 수 있다면..
오늘은 83번 문제를 풀어보겠습니다. EASY고 현재는 47.9%의 성공률을 보이네요. 오늘 주제는 Linked List입니다. 정렬된 링크드 리스트의 헤드가 주어지면, 중복되는 것들을 지워서 각 원소들이 한 번씩만 나타나게 해라. 주어진 예시들을 보겠습니다. 1번 예시를 보면, 1이 2번 나왔잖아요. 그래서 1노드 한 개를 지워줍니다. 지운 결과는 [1,2]이 됩니다. 2번 예시를 보면, 1이 2번 2가 1번, 3이 2번 나왔습니다. 그럼 1노드 1개 지워주고 3노드 1개 지워줘야겠죠. 지운 결과는 [1,2,3]이 됩니다. 문제에서 주어진 제약조건들을 살펴보면 노드의 수, node의 value값, 정렬 보장이 적혀있네요. 마지막 문장이 가장 눈에 띄네요. 일단 정렬이 보장되니까 이 문제는 쉽게 접근할 ..
오늘은 18번 문제를 풀어보겠습니다. 중간 난이도고 36.5%의 성공률을 보이네요. 오늘 주제는 Two Pointers입니다. n정수들로 구성된 nums배열이 주어지면, nums[a], nums[b], nums[c], nums[d]는 a,b,c,d는 0이상 n미만이고 a,b,c,d는 별개이고 nums[a], nums[b], nums[c], nums[d]의 합이 target과 같은 유니크한 quadruplets의 배열을 리턴하세요. 순서는 상관없습니다. 예시를 보겠습니다. 1번을 보면 아웃풋으로 나온 각 1차 배열들의 원소를 합치면 타깃이 됩니다. -2 + -1 + 1 + 2 = 0 -2 + 0 + 0 + 2 = 0 -1 + 0 + 0 + 1 = 0 이렇게 타깃으로 되는 배열을 만들어서 리턴해주면 됩니다...
오늘은 59번 문제인 Spiral Matrix II를 풀어보겠습니다. 중간 난이도이고 59.5%의 성공률을 보이네요. 오늘의 주제는 matrix 행렬입니다. 먼저 문제를 살펴볼게요! 양의 정수 n이 주어지고, 1부터 n^2까지 나선형 순서로 숫자를 채워 n x n의 행렬을 만들어내라. 제약조건으로는 n이 1이상 20이하네요. 아래 예시를 보면 바로 이해되실거에요. 1번 예시는 n이 3으로 들어왔고 나선형 순서로 1부터 9까지 채워나가는거에요. 2번 예시는 n이 1으로 들어왔고 나선현 순서로 1부터 1까지 채워나가는거에요. 그리고 채워진 2차 행렬을 그대로 리턴해주면 됩니다. TMI 예전에.. 정처기(정보처리기사) 시험을 쳐본적이 있는데 언제지... 4년 전인가... 그 시험에서 요 문제가 나왔었어요. 이..
오늘은 67번 문제인 Add Binary를 풀어보겠습니다. 쉬운 난이도며 48%의 성공률을 보입니다. 이 문제의 주제는 비트입니다. 먼저 문제를 살펴보겠습니다. 문자열 a와 b가 주어지고 그것들을 합을 이진 문자열로 반환해주면 됩니다. 주어진 예제를 살펴봅시다. 아래는 1번 예제와 2번 예제를 푼 것입니다. 이 문제를 풀기 위해서 문자열로 받는 a와 b를 인덱스 접근에 가능하도록 배열로 만들어주었습니다. 그리고 answer이라는 곳에 최종 정답이 담 길거고 carry는 캐리 값을 나타내고 i와 j는 각 문자열의 길이-1을 나타냅니다. func addBinary(_ a: String, _ b: String) -> String { let a = Array(a) let b = Array(b) var answe..
안녕하세요. 오늘 풀어볼 문제는 1456번 문제입니다. 중간 난이도이며 55.6%의 성공률을 보입니다. 이 문제는 슬라이딩 윈도우 섹션입니다. 그래서 출제 의도에 맞게 슬라이딩 윈도우 알고리즘을 활용해서 풀어보는 게 좋을 것 같습니다. 슬라이딩 윈도우 알고리즘은 리스트나 배열에서 범위의 값을 비교할 때 유용합니다. 문제를 살펴보겠습니다. 문자열 s와 정수 k가 주어집니다. 크기가 k인 s의 부분 문자열에서의 모음 문자의 최대 수를 반환합니다. 영어에서 모음 문자는 (a, e, i, o, u)입니다. 주어진 예제를 살펴봅시다. 1번 예제를 살펴보면 문자열 "abciiidef"에 k는 3입니다. k가 3이니 substring들의 길이는 모두 3이 되어야 합니다. 0부터 순서대로 가능한 substring을 표..
오늘 풀어볼 문제는 347번 문제입니다. 난이도는 중간 난이도이며 62.8%의 성공률을 보입니다. 문제를 살펴보겠습니다. nums 정수 배열이 주어지고 정수 k가 주어집니다. 가장 빈번하게 나온 요소를 k개 리턴해줍니다. 이는 어떤 순서여도 상관없습니다. 주어진 예제를 살펴봅시다. 1번 예제는 이미 정렬되어 있네요. 1은 총 3개, 2는 2개, 3은 1개 있습니다. k가 2니까 가장 빈번하게 나왔던 1과 2가 리턴됩니다. 2번 예제는 1밖에 포함이 안되어있고 k가 1이니 1이 리턴됩니다. 딕셔너리를 활용해서 문제를 풀어보겠습니다. func topKFrequent(_ nums: [Int], _ k: Int) -> [Int] { var dict = [Int: Int]() // 횟수 증가 for i in nu..
아나그램이란 두 문자열이 알파벳의 나열 순서는 다르지만 알파벳 구성이 일치하면 두 단어는 아나그램이라고 합니다. 한 단어를 재 배열하면 같은 단어가 된다는 것을 아나그램이라고 합니다. ex) 가나 > 나가, 국왕 > 왕국, 남장 > 장남 ex) TAR > RAT, ARC > CAR, ELBOW > BELOW 주어진 두 단어를 정렬하는 방법 func anagram(s1: String, s2: String) -> Bool { guard s1.count == s2.count else { return false } let sorted1 = s1.sorted() let sorted2 = s2.sorted() if sorted1 == sorted2 { return true } else { return false }..
- Total
- Today
- Yesterday
- 애니메이션
- ARC
- wwdc
- stanford SwiftUI
- 책 추천
- 독서
- Animation
- 책
- string
- swift5
- ios
- 알고리즘
- objc
- 머신러닝
- SWIFT
- Deep learning
- 책 후기
- swiftUI
- 딥러닝
- Algorithm
- 스위프트UI
- ReactiveX
- 문자열
- RX
- iOS SwiftUI
- 스위프트
- rxswift
- Xcode
- objective-c
- leetcode
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |