https://school.programmers.co.kr/learn/courses/30/lessons/160586 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 먼저 신경쓴 부분은 찾을 target문자열중 문자가 만약에 없다면 -1 로 끝나는것이다. 그래서 keymap의 문자열을 모두 더해서, 찾을 수 있는지 없는지 먼저 판별했다. 근데 계속 오답이 나왔던게 .. ! keymap 전체 배열중 찾을수는 있어서 indexOf로 순차적으로 가장 작은 수의 index를 구하는데 keymap[0] 에서는 해당 문자가 있고 keymap[1] 에는 없을경우 0이라는..
📚 DFS & BFS 최종정리 DFS : Depth First Search 깊이 우선 탐색 BFS : Breadth First Search 너비 우선 탐색 그래프를 탐색하기 위한 대표적인 알고리즘 DFS, BFS를 이해하기 위해서는 스택, 큐, 재귀를 먼저 알아야한다. 큐(Queue) 스택과 반대로 FIFO 개념으로 먼저 들어간 것이 먼저 나가는 자료구조이다. public class Main{ public static void main(String[] args) { Queue Q = new LinkedList(); Q.offer(1); Q.offer(2); Q.offer(3); Q.poll(); // 1 출력 Q.offer(4); Q.poll(); // 2 출력 } } 전역 클래스 Node DFS와 BF..
📚 스택프레임 & 재귀함수 스택 프레임 스택 프레임은 메모리의 스택영역은 함수의 호출과 관계되는 지역변수와 매개 변수가 저장되는 영역이다. 스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸한다. 함수가 호출되면 스택에는 함수의 매개변수, 호출이 끝날뒤 돌아가는 반환 주소 값, 함수에서 선언된 지역변수 등이 저장된다. 이렇게 스택 영역에 차례대로 저장되는 함수의 호출 정보를 스택 프레임 이라고 한다. 스택 프레임을 활용하면 함수의 호출이 모두 끝난 뒤에 해당 함수가 호출되기 이전 상태로 되돌아갈 수 있다. 재귀함수 public class Recursive { public static void main(String[] args){ Recursive T = new Recursive(); ..
📚 Comparable & Comparator - Comparable과 Comparator는 모두 인터페이스이다. - 즉, 사용하고자 한다면 인터페이스 내에 선언된 메소드를 반드시 구현 해야한다. 보통 Comparable 인터페이스에는 compareTo(T o) 메소드 하나가 선언되어있다. 이것은 compareTo 메소드를 재정의(Override)해야 한다는 것이다. Comparator인터페이스를 사용하려면 compare 메소드를 구현해야 하고, Comparable 인터페이스를 사용하려면 compareTo 메소드를 구현해야한다. ✅ Comparable & Comparator " 객체를 비교할 수 있도록 만든다 " Why ? 원래는 byte, int, double 등 부등호를 통해 쉽게 두 변수를 비교할 ..
📚 @State @Binding Property Wrapper에 대해서 State ✅ PropertyWrapper ? 변화가 생기면 해당 변수의 값을 읽거나 새로 쓸 수 있음을 의미한다. SwiftUI에서는 property wrapper를 사용해서 변수의 변화와 해당 작업을 자동화 할 수 있다. SwiftUI는 state로 선언된 프로퍼티들의 저장소를 관리한다. StateValue 값이 변경되면 뷰는 해당 value의 appearance를 무효화하고 다시 값을 계산한다. State 변수 값이 변경되면 View는 새로 랜더링을 하여 항상 최신 값을 가진다. State 인스턴스는 그 자체로 값이 아닌, 값을 읽고 쓰는 것을 말한다. 현재 뷰 UI의 특정상태를 저장하기 위해 만들어진것이기 때문에 보통 Priv..
https://school.programmers.co.kr/learn/courses/30/lessons/12915 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1번 풀이 import java.util.*; class Solution { public String[] solution(String[] strings, int n) { String[] answer = new String[strings.length]; List list = new ArrayList(); for(int i=0; i
📚 자료구조 자료구조 ✅ 배열(Array) & 링크드 리스트 ✏️ Array와 LinkedList의 차이 배열은 연속된 메모리 공간에 데이터를 저장하고 리스트는 비연속적인 공간에 데이터를 저장한 뒤 두 데이터를 노드로 연결한다는 차이점이 있다. ✏️ Array와 LinkedList의 탐색시간 배열은 index를 통해 데이터에 접근이 가능하다. 따라서 시간복잡도는 O(1)이다. 반면에 리스트는 처음부터 연결된 노드들을 따라가며 데이터를 찾아야하기 떄문에 최악의 경우에는 첫 노드에서 탐색을 시작하고 탐색할 노드가 마지막에 있는 경우가 된다. 따라서 시간 복잡도는 O(N)이다. ✏️ LinkedList에서 삭제연산을 하는 과정 삭제연산을 하기 위해서는 먼저 가장 첫 노드부터 바로 다음 노드가 삭제하고나 하는..
📚 Save Color in UserDefaults from Color Picker variable in Color Data private let COLOR_KEY = "COLOR" private let userDefaults = UserDefaults.standard saveColor func saveColor(color: Color) { let color = UIColor(color).cgColor if let components = color.components { userDefaults.set(components, forKey: COLOR_KEY) } } loadColor func loadColor() -> Color { guard let colorComponenets = userDefaults...