안녕하세요 :) 오늘은 알고리즘 포스팅이에요 재밌는 문제가 있길래 오랜만에!!!! 가져왔습니다 105번 문제이고 난이도는 Medium, 현재 Acceptance는 63.5%입니다 문제로 넘어갈게요 먼저 두 인티저 배열들인 preorder과 inorder이 주어집니다 preorder은 이진트리의 전위(preorder) 순회이고 inorder은 같은 트리의 중위(inorder) 순회래요 이 두 배열을 보고 우리는 이진트리를 생성하고 반환해야 해요 즉 인풋으로 preorder, inorder 배열들이 주어질 건데 이 정보를 가지고 이진트리를 만들어서 리턴해! 첫 번째 예제 두 번째 예제 제약들도 있으니 참고 자 이제 문제를 풀어봅시다 ⭐️ 문제 풀기 전에 알아야 할 중요한 두 가지 사실이 있어요 ⭐️ 1. p..
오늘은 1975문제를 풀어보겠습니다. 중간 난이도며 43.9%의 성공률을 보이고 있네요. 문제를 살펴봅시다. n x n 정수 행렬이 주어지고 행렬의 인접한 두 요소를 선택해 각각에 -1을 곱하는 연산을 마음껏 할 수 있습니다. (단 border를 공유하는 경우에만 인접하다고 간주됩니다.) 그렇게 만든 행렬 요소의 합이 최댓값이 된다면 리턴하면 됩니다. 예시를 봅시다. 1번 예시: [1, -1] [-1, 1] 첫 번째 행에 -1을 곱해줍니다. [-1, 1] [-1, 1] 다음 첫 번째 열에 -1을 곱해줍니다. [1, 1] [1, 1] 모든 원소의 합은 4가 되고 최댓값이 됩니다. 2번 예시: [1 ,2, 3] [-1, -2, -3] [1, 2, 3] 두 번째 행에 마지막 두 원소에 -1을 곱해줍니다. [1..
오늘은 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값, 정렬 보장이 적혀있네요. 마지막 문장이 가장 눈에 띄네요. 일단 정렬이 보장되니까 이 문제는 쉽게 접근할 ..
오늘은 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년 전인가... 그 시험에서 요 문제가 나왔었어요. 이..
오늘 풀어볼 문제는 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..
오늘 풀어볼 문제는 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가지 있었는데..
- Total
- Today
- Yesterday
- ReactiveX
- wwdc
- stanford SwiftUI
- 책 후기
- 알고리즘
- RX
- 스위프트
- 스위프트UI
- 딥러닝
- 문자열
- 머신러닝
- iOS SwiftUI
- SWIFT
- ios
- string
- 책
- Xcode
- 책 추천
- 애니메이션
- objective-c
- Algorithm
- swift5
- Animation
- ARC
- Deep learning
- 독서
- objc
- rxswift
- swiftUI
- 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 |