algorithm
-
1217. Play with ChipsAlgorithm/LeetCode 2020. 5. 28. 13:40
출처: leetcode.com/problems/play-with-chips/ 분류: Greedy, Easy 접근방식 문제 자체를 이해하기가 어려웠던 문제였습니다. 간단히 요약하면, chips 에는 chip이 있는 index 가 적혀있습니다. 즉, chips = [2,2,2,3,3] 이렇게 주어져 있다면, 아래와 같은 모습으로 생각할 수 있습니다. 칩이 있는 인덱스 1 2 3 칩의 개수 0 3 2 이 칩들은 좌우로 2칸을 움직일 때는 비용이 없고 1칸을 움직일 때는 1의 비용이 듭니다. 여기서 이 칩을 한 곳으로 모으는 방법은 2가지 방법이 있습니다. 2에 있는 칩3개를 3으로 옮기는 방법 --> 비용 2 3에 있는 칩 2개를 2로 옮기는 방법 --> 비용 3 당연히 3을 2로 옮기는게 좋겠죠?? 다음으로..
-
1221. Split a String in Balanced StringsAlgorithm/LeetCode 2020. 5. 23. 21:34
출처: https://leetcode.com/problems/split-a-string-in-balanced-strings/ Split a String in Balanced Strings - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 분류: Greedy, Easy 접근방식 "L", "R"로 이루어진 문자열에서 짝이 맞는 문자열의 개수가 얼마나 되는지 찾는 문제입니다. 저는 처음에 L 과 R 의 개수를 저장하는 변수를 만들고 카운트 해주면서 둘이 같아지면 ba..
-
Programmers) Lv2 가장 큰 수Algorithm/Programmers 2020. 5. 1. 11:06
출처: https://programmers.co.kr/learn/courses/30/lessons/42746 분류: Lv2, 정렬 접근방식 주어진 수로 만들 수 있는 가장 큰 수를 구하는 문제입니다. 처음엔 첫 자리부터 비교하려고 했었는데요, 이렇게 하면 매우 복잡해집니다. 우선 앞 자리부터 비교하기가 어렵습니다. 길이를 알면 자리수로 나눠볼텐데 그것도 안되고 뒤집자니 뒤가 0이라면 날라갈테고 문자열로 바꿔서 한 자리씩 비교하더라도 각각의 길이가 다르기 때문에 어렵습니다. 무작정 길이가 짧다고 앞에 둘 수가 없습니다. 가령, [5, 559] 가 있다면 5559 < 5595 가 되어버립니다. 중간에 0이 껴있는 경우는 어떻게 처리 할 것이며... 네 첫 단추를 잘못 끼웠습니다... 결국 다른 분들의 풀이를..
-
Programmers) Lv2 조이스틱Algorithm/Programmers 2020. 1. 29. 16:50
출처: https://programmers.co.kr/learn/courses/30/lessons/42860 코딩테스트 연습 - 조이스틱 | 프로그래머스 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다음 알파벳 ▼ - 이전 알파벳 (A에서 아래쪽으로 이동하면 Z로) ◀ - 커서를 왼쪽으로 이동 (첫 번째 위치에서 왼쪽으로 이동하면 마지막 문자에 커서) ▶ - 커서를 오른쪽으로 이동 예를 들어 아래의 방법으로 JAZ를 만들 수 있습니다. - 첫 번째 위 programmers.co.kr 분류: Lv2, Greedy 너무너무 어려웠던 문제... 하 어렵네..
-
Swift) GenomicRangeQuery in CodilityAlgorithm/Codility 2020. 1. 3. 18:06
https://app.codility.com/programmers/lessons/5-prefix_sums/genomic_range_query/ GenomicRangeQuery coding task - Learn to Code - Codility Find the minimal nucleotide from a range of sequence DNA. app.codility.com 출처: Codility 분류: Lesson5 Prefix Sums 개인적으로 매우 매우 고통 받았던 문제입니다.. "푸는 것" 자체는 어렵지 않게 할 수 있으나 시간 복잡도를 통과하기가 굉장히 어려웠습니다.. Hㅏ.... 문제를 간단히 요약하면 ACGT 로 이루어진 유전자 배열 S와 유전자의 부분의 인덱스가 들어있는 P, Q가 주어..
-
Linked ListComputer Science/DataStructure 2019. 11. 19. 00:27
- 선형 자료구조 - 순차적 접근방식 ( O(n) ) - 삽입, 삭제가 빠르다 ( O(1) ) - 다음 노드를 가리키는 주소를 저장할 공간 필요 Linked List는 순차적으로 모인 데이터들의 모음이다. 흔히 각각의 데이터를 Node(노드), 각 노드는 다음 차례의 노드의 reference(주소)를 갖고 있다. 대표적으로 두 가지 유형이 있는데, Singly Linked List: 내 다음 노드(next node)의 주소만을 갖고 있다. Double Linked List: 내 이전(previous)과 다음의 주소를 갖고 있다. Linked List를 사용하기 위해서는 시작과 끝의 주소를 알아야 하는데 이를 head와 tail이라 부른다. Performance Linked List의 대부분의 연산은 O(..
-
Swift) 소수점 다루기Swift 2019. 7. 22. 22:01
Swift 에서 소수점을 조작하려면 어떻게 해야할까요? 매번 헷갈리는 이 녀석들 제대로 한번 알아보죠! 이번 포스팅의 목표는 이녀석을 풀어보는겁니다! 어려운 문제는 아니지만 이번 포스팅을 다 읽고 저 문제를 수월하게 푸신다면 제 목표는 성공이겠네요 :D Swift 에서 대표적인 소수점 관련 함수 3개가 있습니다. ceil() 소수점 이하를 모두 버리고 정수부에 +1 을 해줍니다. floor() 소수점 이하를 모두 버립니다. round() 소수점 이하를 반올림합니다. 0.5 이상은 1로 올리고 미만은 버립니다. 위 함수들은 Foundation 를 import 해줘야 합니다. 활용 여기까진 알겠는데 한 가지 궁금한 점이 있으실겁니다. 그럼 특정 소수점까지에 대해 적용하고 싶으면 어떻게 하지? 제가 알기론 따..
-
Algorithm) 숫자 하나씩 확인하기Algorithm 2019. 7. 3. 14:49
17037300 와 같이 큰 수를 한 글자씩 확인해야 할 경우가 있습니다. 예를들어 다음과 같은 문제를 풀 경우가 되겠네요. 어려운 문제는 아니지만 꽤나 자주 등장하기 때문에 한번 짚고 넘어가고 싶어 포스팅을 하게 되었습니다 :D 1. 문자열로 바꿔서 하나씩 탐색 제 경우에 가장먼저 떠오른 생각은 문자열로 바꿔서 하나씩 탐색 하기였습니다. 이러한 방식으로 위 문제를 풀면 let numString = String(a*b*c) var numbers = [Int](repeating: 0, count: 10) for s in numString { if let n = Int(String(s)) { numbers[n] += 1 } } 다음과 같이 풀 수 있겠네요. 이러한 방식은 Swift와 같이 형변환이 까다로운 ..