[SWIFT] Swift 문법의 기초
Develop/iOS2024. 2. 15. 19:28[SWIFT] Swift 문법의 기초

Swift 문법의 기초 Swift는 IOS, macOS, watchOS, tvOS를 만들기 위한 새로운 프로그래밍 언어이다. 기초적인 자료형으로는 Int, Double, Float, Bool, String, Array, Set, Dictionary가 있다. C언어와 마찬가지로 Swift는 값을 저장하고 참조하기 위해 변수를 사용하고 이름으로 변수를 구분한다. Swift에는 변수 중에서도 값을 변경할 수 없는 Constant(상수)를 제공하고 이로 인해 C에서 보다 더 많은 기능을 수행할 수 있다. Swift에는 Objective-C에서는 볼 수 없는 tuple(튜플) 형식도 제공한다. 튜플을 사용해서 여러 값을 하나의 값으로 반환할 수도 있다. Swift에서는 Optional Type(옵셔널 타입)을 제..

[iOS][ERROR] Button AddTarget 에러
Develop/iOS2024. 2. 15. 18:01[iOS][ERROR] Button AddTarget 에러

문제 발생 Flutter를 하다가 다시 iOS 네이티브를 공부하려고 돌아오면서 몇 가지 UI들에 대해 테스트를 해보고 있었다. 스토리보드를 사용하지 않고, 코드로만 UI 구성하기를 연습하고 싶어서 스토리보드를 없애고 하나씩 확인을 해보고 있었다. 그 중 버튼을 눌러서 다른 화면으로 넘어가는 것을 해보고 있었는데, 아래의 코드에서 오류가 나기 시작했다. ▼ class ViewController: UIViewController { let testButton : UIButton = { let button = UIButton() button.setTitle("Button", for: .highlighted) button.layer.cornerRadius = 20.0 button.backgroundColor = ..

플로이드 와샬
Algorithm/Algorithm 개념2024. 2. 15. 17:01플로이드 와샬

개요 플로이드-와샬 알고리즘은 변의 가중치가 음이거나 양인 가중 그래프에서 최단 경로들을 찾는 알고리즘이다. 가중치가 음인 그래프는 있지만, 음수 싸이클은 없다. (음수 싸이클이란? 음의 가중치가 더 커서 최단 경로를 계속해서 줄일 수 있는 상태의 간선을 말함.) 벨만-포드와 음의 가중치의 최단 경로를 계산할 수 있다는 점에서 비슷하지만, 플로이드-와샬 알고리즘은 한 번 수행하면 모든 꼭짓점 쌍 간의 최단 경로의 길이(가중치의 합)을 찾는다. 즉, 벨만-포드와 다익스트라 알고리즘은 한 정점에서 다른 모든 정점으로의 최단 경로를 구했다면, 플로이드-와샬 알고리즘은 모든 정점에서 모든 정점으로의 최단 경로를 구한다. 또한 플로이드-와샬 알고리즘은 다이나믹 프로그래밍으로 볼 수도 있다. 알고리즘 알고리즘 분류..

벨만 포드
Algorithm/Algorithm 개념2024. 2. 15. 16:32벨만 포드

개요 가중치가 있는 그래프에서 최단 경로 문제를 푸는 알고리즘이다. 최단 경로 문제라고 하면 다익스트라와 같은 작업을 수행하고, 심지어는 다익스트라가 더 빠르기까지 하다. 하지만 벨만-포드 알고리즘의 의의는 다익스트라 알고리즘이 처리하지 못하는 음수인 간선을 처리할 수 있다는 것이다. 그래서 음수인 간선이 등장하는 경우에는 벨만-포드 알고리즘을 사용한다. 알고리즘 벨만-포드 알고리즘에서 중요한 부분 벨만-포드 알고리즘에서 가장 중요시 해야할 부분은 음의 싸이클이다. 벨만-포드 알고리즘은 다익스트라 알고리즘과 같이 값이 더 작은 값이 나오면 갱신하는 식으로 진행된다. 그런데 음의 싸이클이 등장하게 되면, 한 번 순회를 돌 때마다 값이 계속 작아져서 무한히 갱신하게 된다. 그래서 우리는 순회 횟수를 V - ..

[Flutter][Package] ScreenUtil 패키지
Develop/Flutter2024. 2. 15. 15:02[Flutter][Package] ScreenUtil 패키지

개요앱 개발을 하다보면 해상도 대응이 상당히 까다롭다.디자이너가 준 화면을 구현하고, 실제 기기에서 보면 뭔가 이상할 때가 많다.이는 해상도가 맞지 않아, UI 배치가 조금씩 틀어지면서 생기는 문제다. 각 기기마다 해상도가 다르기 때문에 모든 기기에 맞게 코드를 작성하는 것은 어렵다.이를 위해 iOS에선 Auto Layout과 같은 방법론이 등장했다. 하지만 Flutter에서는 어떨까? Flutter에서도 padding을 사용하여 CSS나 iOS와 같이 해상도 대응을 할 수 있다.일반적으로는 이게 정석인데, 약간의 꼼수를 사용할 수 있다. 바로 ScreenUtil 패키지를 이용하는 것이다.  ScreenUtil 이란?ScreenUtil 패키지는 해상도를 자동 대응해주는 패키지이다.기준 화면을 설정하면, ..

[Flutter][Widget] Spacer 위젯
Develop/Flutter2024. 2. 14. 20:02[Flutter][Widget] Spacer 위젯

Spacer란? Spacer는 Row와 Column과 같은 Flex Container (이는 뒤에서 알아볼 것이다.)의 공간을 조절하는 빈 공간을 만들어주는 위젯이다. 이름 그대로 Space + er로 공간을 만들어주는 위젯이다. Spacer 위젯은 추가적인 공간을 잡는 위젯이기 때문에 Flex container안에 있는 Flex.mainAxisAlignment를 MainAxisAlignment.spaceAround, MainAxisAlignment.spaceBetween, MainAxisAlignment.spaceEvenly 로 설정하면 추가 공간을 모두 차지했으므로 재배포할 공간이 남아 있지 않아 가시적인 효과가 없다. 즉, Spacer는 MainAxisAlignment 속성을 모두 무시한다는 것이다..

[Flutter] Const를 사용해야하는 이유
Develop/Flutter2024. 2. 14. 15:09[Flutter] Const를 사용해야하는 이유

개요 Flutter로 크로스 플랫폼 앱 개발을 하다보면, 아래와 같이 `const`를 붙이라는 경고메세지가 등장한다. ▼ 이는 Error가 아닌 단순 Warning이라서 지키지 않아도 프로그램이 컴파일 되는 데에는 큰 문제가 없다. 하지만 아래에 파란줄이 남은 것을 볼 때면 굉장히 찝찝해져서 const를 붙이지 않고 넘어갈 수 없다. ▼ 이쯤되면 의문이 하나 생긴다. "도대체 왜 `const` 키워드를 붙이라고 권장하는걸까?" 프로그래밍 문법을 배울 때 const는 상수라고 배운다. 그리고 상수는 변하지 않는 값을 선언할 때 사용한다고도 배우는데, Dart에는 `const`외에 `final`이라는 키워드가 존재한다. 변하지 않는 값을 선언하는 것을 권장하는 것이라면 `const`가 아니라 `final`을..

LeetCode 2. Add Two Numbers - C++
Algorithm/PS2024. 2. 13. 21:36LeetCode 2. Add Two Numbers - C++

문제 You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order, and each of their nodes contains a single digit. Add the two numbers and return the sum as a linked list. You may assume the two numbers do not contain any leading zero, except the number 0 itself. 두 개의 양의 정수를 나타내는 비어 있지 않은 두 개의 연결 리스트가 제공된다. 숫자는 역순으로 저장되며, 각 노드에는 단일 숫자가 포함..

LeetCode 1. Two Sum - C++
Algorithm/PS2024. 2. 13. 21:10LeetCode 1. Two Sum - C++

문제 Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target. You may assume that each input would have exactly one solution, and you may not use the same element twice. You can return the answer in any order. 예제 Example 1: Input: nums = [2,7,11,15], target = 9 Output: [0,1] Explanation: Because nums[0] + nums[1] == 9, we return [0, ..

백준 1152번 단어의 개수 - SWIFT, C++
Algorithm/PS2024. 2. 13. 18:53백준 1152번 단어의 개수 - SWIFT, C++

문제 영어 대소문자와 띄어쓰기만으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다. 입력 첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열의 앞과 뒤에는 공백이 있을 수도 있다. 출력 첫째 줄에 단어의 개수를 출력한다. 문제 링크 1152번: 단어의 개수 1152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백..

image