오늘은 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..
중복 제거에 대한 알고리즘을 풀어보려 합니다. 중복을 제거하는 방법에 대해서 여러 가지가 존재해서 여러가지 방법을 사용해서 문제를 해결하겠습니다. 오늘 풀 문제는 217번이고 쉬운 난이도고 57%의 성공률을 보이네요. 그렇게 어렵지는 않은 문제인 것 같아요! 먼저 문제를 살펴보겠습니다. 정수형 배열 nums가 주어지고 값이 배열에 적어도 두 번 나타나면 참을 리턴하고 모든 숫자가 고유하다면 거짓을 반환합니다. 즉 중복되는 게 있으면 바로 참을 리턴해주면 됩니다. 1번 예시를 보면 1이 중복되니 참을 리턴해줍니다. 2번 예시를 보면 모든 숫자가 중복되지 않아서 거짓을 리턴해줍니다. 3번 예시를 보면 1이 중복되고 3이 중복되고 4가 중복되고 2가 중복되어 참을 리턴해줍니다. 생각나는 방법이 3가지 있었는데..
오늘은 LeetCode 알고리즘 문제를 풀어보겠습니다. 처음부터 차근차근 :) 문제 제목은 Two Sum이며 설명은 아래와 같습니다. Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each input would have exactly one solution, and you may not use the same element twice. 정수 배열이 주어지며, 두 수를 더해 타겟이 되는 수의 인덱스를 리턴해라. 각 입력에는 하나의 답만 존재하며, 동일한 원소가 두 번 나오지 않는다고 가정한다. 음 예시를 보면 확실히 알 것 같습니..
이전에 전화번호부 관련 프로젝트를 진행한 경험이 있다. 하지만 전화번호부에 있는 이름들을 다 선형 탐색으로 필터링하고 있었다. 사실 유저가 많지 않기 때문에 선형탐색으로 해도 특별히 문제점을 느끼지 못했다. 하지만 유저의 수가 증가할수록 선형 탐색이 아닌 이진 탐색이 필요하다는 것을 느끼게 되었다. 때문에 이 부분은 수정이 필요했다. 왜 선형 탐색보다 이진 탐색이 나았는지는 아래 코드 결과를 보면 정확하게 파악할 수 있다. 선형 탐색과 이진 탐색을 비교하기 위해 먼저 정렬된 배열을 준비했다. for문을 돌려 0부터 1000까지의 숫자를 붙여주고 그 배열을 가지고 탐색을 진행했다. 먼저 선형 탐색을 보자. linear 말 그대로 하나씩 탐색하며 검사하는 방법이다. 30을 찾는다고 가정한다. for문을 돌면..
버블 정렬은 옆에 있는 값과 비교해서 정렬하는 알고리즘입니다. 버블 정렬은 계속해서 옆 원소랑 비교하며 정렬합니다. 또한 한 번의 external for loop가 끝났을 때 가장 큰 값이 맨뒤로 갑니다. 코드를 살펴봅시다. arr는 우리가 정렬해야 할 배열이며, 1부터 7까지 정렬되지 않은 상태로 존재합니다. arr의 크기는 7이고 인덱스는 0부터 6까지 입니다. external for loop는 6부터 시작해서 아래로 내려오며, internal for loop는 0부터 external의 i까지 올라가며 비교하며 정렬하기 위함입니다. 차근차근 살펴봅시다. external for loop의 i값은 6이며 internal for loop의 j값은 0부터 5까지 실행됩니다. j가 0인 경우를 살펴봅시다. a..
코딜리티의 데모 테스트의 문제는 이렇습니다. 저는 언어를 Swift4로 선택했습니다. 하하. 먼저 문제 해석 :) N개의 정수 중 A배열이 주어지면 A에서 발생하지 않은 가장 작은 양의 정수를 리턴하세요. 예를 들어 A= [1,3,6,4,1,2]이면 함수는 5를 리턴해야 합니다. A = [1,2,3]이면 함수는 4를 리턴해야 합니다. A = [-1,-3]이면 함수는 1을 리턴해야 합니다. 블라블라 효율적인 알고리즘을 작성해주라. N은 [1.. 100,000] 범위의 정수이며 A의 각 요소는 [-1,000,000.. 1,000,000]입니다. 일단 데모 테스트를 풀어보자. 핵심은 주어진 A배열에서 발생하지 않은 가장 작은 양의 정수를 리턴해야 합니다. 그냥 for문으로 1부터 A의 카운트만큼 돌려서 배열에..
- Total
- Today
- Yesterday
- leetcode
- Algorithm
- Animation
- swiftUI
- 독서
- ios
- 애니메이션
- swift5
- iOS SwiftUI
- 책 추천
- 머신러닝
- Deep learning
- 스위프트UI
- Xcode
- wwdc
- string
- ARC
- 스위프트
- ReactiveX
- 딥러닝
- 책
- 책 후기
- stanford SwiftUI
- RX
- objective-c
- 문자열
- 알고리즘
- objc
- SWIFT
- rxswift
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |