
여러 앱이나 웹에 위와 같은 배너가 사용되고 있고, 오픈 소스 라이브러리도 많이 있다. 개인적으로 UI가 이쁘다고 생각해 프로젝트에 적용도 해볼 겸 UICollectionView를 이용해 직접 구현해봤다. 이전 글인 iOS) UICollectionView Programmatically에서 만든 CollectionView를 사용했다. 구현해야 할 내용을 간단하게 정리해 보자면 다섯 가지가 있다. 셀 Size, Inset 조절 스크롤 시 셀이 가운데 위치 페이징 일정 시간마다 자동으로 스크롤 중앙에 위치하는 아이템의 사이즈를 조절 먼저 Cell의 Size와 을 조절해 Cell이 카드처럼 보이도록 만들어보자. 1. Cell Size, Inset 조절 Cell Size와 Inset은 UICollectionVie..

네이버 지도 SDK를 사용해보자. 네이버 공식 문서에 사용 방법이 자세하게 나와있다. iOS 시작 가이드 - Mobile Dynamic Map (v3) guide.ncloud-docs.com 1. 클라이언트 ID 발급 NAVER CLOUD PLATFORM 회원가입을 한 후 콘솔로 들어와 주자. 콘솔 좌측 인스펙터에 Services를 누르면 사용 가능한 서비스들이 나온다. AI-NAVER-API의 Maps을 이용할 것이다. AI-NAVER-API 클릭하면 다음과 같은 화면이 나온다. 먼저 Application 등록을 진행해주자. Application 이름을 설정하고 사용할 Mobile Dynamic Map을 선택한다. 그리고 아래쪽에 iOS Bundle ID를 입력해주자. 프로젝트의 Bundle ID를 입..

10820번: 문자열 분석 문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오. 각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있 www.acmicpc.net 풀이 while let input = readLine() { var result = [0, 0, 0, 0] for char in input { let ascii = char.asciiValue! if ascii >= 65 && ascii = 97 && ascii = 48 && ascii

StoryBoard 없이 탭바를 사용해 보자. 1. Main Interface 설정 먼저 TARGETS- General - Deployment Info의 Main Interface가 Main으로 되어있는데 지워주자. 2. Info.plist 설정 info.plist의 StoryBoard Name도 삭제하자. 3. Main.storyboard 삭제 4. TabBar 추가 ( SceneDelegate) 새로 만든 ViewController 세 개를 탭바에 추가해보자. 앱이 실행될때 탭바가 추가되도록 SceneDelegate에 작성하였다. func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: U..

10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net 풀이 import Foundation let S = Array(readLine()!) var result: [Int] = Array(repeating: -1, count: 26) for char in S { result[Int(char.asciiValue!) - 97] = S.firstIndex(of: char)! } print(result.map{ String($0) }.joined(separator: " "))

10808번: 알파벳 개수 단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다. www.acmicpc.net 문제 요약 문자열(S)의 각 문자 개수를 출력 풀이 문자의 아스키코드를 인덱스 값으로 이용해 카운팅 한다. import Foundation let input = readLine()! var result: [Int] = Array(repeating: 0, count: 26) for char in input { result[Int(char.asciiValue! - 97)] += 1 } print(result.map{ String($0) }.joined(separator: " "))

17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 문제 요약 크기가 N인 수열이 A가 있을 때 A[i]의 오른쪽에 있으면서 A[i] 보다 큰 수 중에 가장 왼쪽에 있는 수를 오큰수라 한다. 수열 A의 모든 원소의 오큰수를 순서대로 출력하자. 단, 오큰수가 없는 경우에는 -1을 출력하자. 풀이 이중반복문으로 쉽게 할 수 있지만 당연하게도 시간 초과이다. 모든 원소가 -1 인 result 배열에 각 인덱스의 오큰수를 넣어주자. stack에는 오큰수를 찾지 못한 인덱스 번호를 넣어준다. 만약 스택의 가장 윗 원소(= 인덱스)에..

1935번: 후위 표기식2 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이 www.acmicpc.net 문제 요약 후위 표기식은 식의 앞에서부터 피연산자면 스택에 넣고 연산자면 스택에 들어있던 피연산자를 꺼내서 연산하는 것. 후위 표기식의 계산 결과를 소수점 둘째 자리까지 출력하라 풀이 피연산자가 A... Z로 주어지지만 결국에는 Double형이다. numbers에 입력 받은 숫자들이 들어가 있는데 A = numbers[0] , B = numbers[1] ... 이런 식으로 바꿔 주어야 한다. A...Z를 (아스키 코드 - 65)로 바꿔 index 번호..
- Total
- Today
- Yesterday
- crud
- autolayout
- NaverMaps
- BOJ 10799
- Carousel Effect
- bottom sheet
- UICollectionView Error
- 2023 회고
- git
- CAGradientLayer
- BOJ 10820
- Custom Detent
- sheetPresentationController
- BOJ 10808
- Gradient View
- BOJ 10809
- Card CollectionVIew
- BOJ 17413
- UICollectionView banner
- Algorithm
- 요시푸스
- Stack
- github
- ios
- Sheet Height
- BOJ 10866
- BOJ 17298
- 1406 에디터
- swift
- BOJ 1935
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |