본문 바로가기

분류 전체보기43

[Xcode] Sandbox: rsync.samba(24495) deny(1) 에러 사항 Sandbox: rsync.samba(24495) deny(1) file-write-create /Users/yugseongmin/Library/Developer/Xcode/DerivedData/allinonesns-gciarraamzgeqmdwjiuvlqicftmk/Build/Products/Debug-iphonesimulator/allinonesns.app/Frameworks/FBSDKCoreKit.framework/FacebookSDKStrings.bundle 해결 https://stackoverflow.com/questions/76590131/error-while-build-ios-app-in-xcode-sandbox-rsync-samba-13105-deny1-file-w error w.. 2023. 12. 19.
[Swift] 백준 16139 : 인간-컴퓨터 상호작용 https://www.acmicpc.net/problem/16139 16139번: 인간-컴퓨터 상호작용 첫 줄에 문자열 $S$가 주어진다. 문자열의 길이는 $200,000$자 이하이며 알파벳 소문자로만 구성되었다. 두 번째 줄에는 질문의 수 $q$가 주어지며, 문제의 수는 $1\leq q\leq 200,000$을 만족한다. 세 번째 www.acmicpc.net 풀이 과정 누저합 원리만 알고 있다면 크게 어려움이 없는 문제이다. 단, 1) 질문의 수가 최대 200,000번이기 때문에 매번 반복되지 않도록 한번 누적합을 구한 알파벳의 누적합은 저장해놓고 사용하도록 하고 2) 물어보지 않을 특정 문자가 있을 수 있기 때문에 특정 문자가 등장하는지에 대한 누적합을 처음 물어볼 때에만 누적합을 구하도록 한다. 먼.. 2023. 12. 18.
[Swift] 백준 3020 : 개똥벌레 https://www.acmicpc.net/problem/3020 3020번: 개똥벌레 개똥벌레 한 마리가 장애물(석순과 종유석)로 가득찬 동굴에 들어갔다. 동굴의 길이는 N미터이고, 높이는 H미터이다. (N은 짝수) 첫 번째 장애물은 항상 석순이고, 그 다음에는 종유석과 석순이 www.acmicpc.net 풀이 방식 나는 처음에는 1...n 구간마다 장애물로 막혀 있는 곳의 위치들을 높이별로 빈도수 배열을 구한 뒤 배열 전체를 검색하면서 최솟값과 그 개수를 구하는 방식으로 구현했었다. // 완전 탐색으로 구현할 경우 O(n^2) 복잡도 for i in 0.. 2023. 12. 14.
[Swift] 백준 10986 : 나머지 합 https://www.acmicpc.net/problem/10986 10986번: 나머지 합 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) www.acmicpc.net 단순히 누적합 알고리즘으로 접근할 경우에 아래와 같이 시작점과 끝점의 모든 경우의 수를 확인해야 하므로 시간 복잡도가 O(n^2) for i in 0...n-1 { for j in i+1...n { count += ( psum[j]-psum[i] ) % 1 == 0 ? 1 : 0 { { 하지만 여기서 누적합 psum[0]...psum[n] 중 나머지.. 2023. 12. 13.
[디자인 패턴] 싱글톤 패턴 싱글톤 패턴이란? 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴. 원래는 하나의 클래스에 여러 개의 인스턴스를 생성할 수 있지만 싱글톤 패턴에서는 단 하나만을 생성하여 이 인스턴스를 공유하여 사용하는 패턴. 장점 하나의 인스턴스만을 사용하기 때문에 인스턴스를 생성하는 비용을 줄일 수 있다는 장점이 있다. 단점 의존성이 높아진다. 예를 들어 단위 테스트를 진행할 때 테스트가 서로 독립적이어야 하는데 하나의 인스턴스를 여러 테스트들이 공유할 경우 문제가 발생할 수 있다. Swift 예시 코드 스위프트에서는 싱글톤 패턴을 비교적 간단하게 구현할 수 있다. class User { static let shared = User() var name: String? var age: Int? private init.. 2023. 12. 12.
선언형 프로그래밍 선언형 프로그래밍이란? 선언형 프로그래밍(Declarative Programming)은 프로그램의 로직을 명령형(Imperative Programming) 방식의 단계별 '어떻게'가 아닌, '무엇을' 할 것인지에 중점을 두는 프로그래밍 패러다임이다. 개발자가 UI의 '무엇'을 정의하도록 하고, '어떻게' UI가 그려질지는 프레임워크가 처리하게 한다. Flutter에서의 선언형 프로그래밍 class LoginForm extends StatelessWidget { @override Widget build(BuildContext context) { return Column( children: [ TextFormField(decoration: InputDecoration(labelText: 'Username').. 2023. 12. 12.
[Flutter] --dart-define 옵션 사용법 --dart-define 옵션이란? 이 설정을 통해 사용자 정의 변수를 정의하고 런타임 시 동적으로 사용할 수 있도록 하는 옵션. 런타임의 환경에 따라 서버 엔드포인트를 변경하거나 로깅 레벨을 조정하거나 배포 환경을 설정하는 등의 목적으로 사용할 수 있다. 사용법 실행(빌드) 명령 뒤에 --dart-define=변수명=값 추가 flutter run --dart-define=변수명=값 ex) api 서버 엔드포인트를 설정할 경우 flutter run --dart-define=API_URL=https://dev.api.com ex) debug / production 빌드 환경을 구분하여 id 입력 flutter run --dart-define=FIREBASE_PROJECT_ID=your_debug_proj.. 2023. 12. 10.
[Swift] 백준 2559 : 수열 # 풀이 전형적인 누적합 문제. 아래와 같이 psum[0] = 0 부터 시작하는 prefix sum을 먼저 구한 뒤 var psum = [Int](repeating: 0, count: n + 1) for i in 1...n { psum[i] = psum[i-1] + inputArr[i-1] } psum[m] - psum[0] 부터 psum[n] - psum[n-m] 중 가장 작은 값을 찾는다. var max = Int.min; for i in m...n { if( max < psum[i] - psum[i-m] ) { max = psum[i] - psum[i-m] } } 소스코드 import Foundation let input = readLine()!.split(separator: " ").map{Int.. 2023. 12. 7.
[Flutter] Text 길이에 따라 폰트 크기 조절하는 4 가지 방법 1. MediaQuery.of(context).sizedouble screenWidth = MediaQuery.of(context).size.width; double textSize = screenWidth < 390 ? 16.0 : 14.0; 화면 사이즈에 따라 폰트 사이즈가 변하는 방식이다. 조금 투박하다. 모든 상황을 커버할 수는 없지만 넉넉하게 폰트 사이즈를 작게 잡는다면 가장 손쉽게 해결할 수 있는 방법이다. 2. FittedBox내가 선호하는 방식이다. Flutter에서 제공하는 위젯 중 하나로 FittedBox 위젯에 주어지는 제약에 맞춰서 FittedBox 내부의 contents의 크기를 조정해준다. 내가 주로 사용하는 방식은 아래와 같다.FittedBox( fit: BoxFit.scale.. 2023. 11. 23.