[프로그래머스] 명예의 전당 (1) [프로그래머스] 2016년
문자열 비교에서, 일반적으로 행하는 좌측에서 우측으로의 탐색이 아닌 반대 방향으로의 탐색을 하는 방법에 대해 생각해볼 수 있었다.배열 자료형은 Array\[n] 과 같은 정수형의 인덱스로 간단하게 접근이 가능, 문자열을 배열로 형변환 한다면 매우 편하게 탐색을 수행할
[프로그래머스] 카드뭉치, [프로그래머스] 과일장수, [프로그래머스] 모의고사
[프로그래머스] 소수 만들기, 덧칠하기, 기사단원의 무기, 로또의 최고 순위와 최저 순위
시간복잡도에 대해서 조금 생각해보는 계기가 되었다. 이 문제는 제한사항이 꽤 많은데, 아무 생각없이 코드를 쭉 적어 내리다가 꽤 많은 테스트 케이스에서 반려를 당했다. 예시로..여벌 체육복을 가져온 학생이 체육복을 도난당했을 수 있다.이 구문에서 꽤 많은 어려움을 겪었
위의 코드로 문제를 해결했는데... 문제를 해결했을 때는 뿌듯했으나, 프로그래머스 사이트 특성 상 문제 해결 후 다른 사람의 풀이를 볼 수 있고 거기엔 대현자님들이 즐비했다.일단 나는 카운트 변수를 두 개 선언한 후 분기문 안에 분기문을 작성하는 등, 가독성이 매우 떨
[Swift 기초 문법], [프로그래머스] 대충 만든 자판
어제 꼭 딕셔너리를 문제 풀이에 활용해보겠다고 생각했는데, 오늘 그럴 수 있는 문제가 딱 나왔다. 사실 무조건(?) 딕셔너리 자료형을 사용해서 풀어야 하는 문제는 아닐 것이다. 그래도, 풀어냈으면 그거도 정답이니까... 대만족한다. 시간이 조금 오래 걸리기는 했어도,
사용하는 메서드의 정의 부분을 잘 살펴보면, 답이 나온다.필요에 따라서 여러 사이트들이 많은 도움이 되곤 하는데, Apple 공식 홈페이지랑 Swift github이 많은 도움이 된다.미리미리 어떤 식으로 둘러보면 좋은 정보를 얻을 수 있는지 파악하기 위해 가끔 들려서
프로퍼티를 관찰하면서 변경 사항이 발생할 때 실행.실행 순서 : willSet > didSet저장 프로퍼티와 연산 프로퍼티에 추가할 수 있음새 값이 저장된 직후에 호출, 이전 프로퍼티의 값이 oldValue라는 이름으로 제공됨.값이 저장되기 직전에 호출, 새로운 프로퍼
문제를 해결하기 위한 로직을 머릿 속에만 가지고 있는 것이 아닌, 기록으로써 남겨 눈에 보이도록 도식화하는 방법은 문제 해결 자체에 큰 도움이 된다는 것이다.도식화하는 방법에는 아무런 차이가 없다고 생각한다. 다만 눈에 보이도록 정리하는 습관이 문제 해결에 굉장히 많은
예시) 함수의 입력타입과 반환타입이 (Int, Int) -> Int 일 때클로저가 메소드의 인자로 전달되었을 때, 메소드의 실행이 종료된 후 실행되는 클로저(비동기)파라미터 타입 앞에 무조건 @escaping 키워드를 붙여주어야 함또한, @escaping 키워드가 붙은
분기문의 조건을 작성하는 것은 매우 신중하게 해야 한다.이 문제의 경우에는 반복문과 분기문을 상당히 많이 작성해서 해결한 문제인데, 막판에 index관련 에러가 많이 떠서 해결에 애를 먹은 문제이다.반복문 내에 분기문을 4개정도 선언해서 문제를 해결하는 와중에, 조건에
이니셜라이저는 함수가 생성되었을 때(생성자를 호출했을 때) 가장 먼저 실행되는 구문이니까, 함수의 최상단에 위치하는게 좋다.관습적으로 이니셜라이저는 클래스 최상단에 위치함.이번 과제가 팀을 이뤄서 하는 프로젝트의 첫 경험이었는데, 느낀 점과 더 잘할 수 있었던 점을 아
UILabel : 텍스트를 표시하는데 사용되는 UI 요소UIImageView : 이미지를 표시하는 데에 사용되는 UI 요소UITextField : 사용자로부터 텍스트를 입력받기 위해 사용되는 UI 요소UIButton : 사용자가 터치하여 상호작용할 수 있는 UI 요소U
UITableView : 데이터 목록을 표시하고 사용자와 상호작용할 수 있는 스크롤 가능한 요소UICollectionView : 유연한 그리드 에이아웃을 사용하여 아이템 목록을 표시하고 사용자와 상호작용할 수 있는 스크롤할 수 있는 UI 요소다양한 디바이스 및 화면 방
0으로 적혀진 라벨이 뷰의 정 가운데에(오토레이아웃 사용) 있어야 한다.증가, 감소라고 적힌 버튼을 라벨 기준 위, 아래 16px 만큼 위치시킨다.증가 버튼을 누르면 라벨의 숫자가 1 증가하고, 감소를 누르면 1 감소하도록 설계한다.viewImage라벨을 countLa
만들고 싶은 어플의 레이아웃을 대강 짜봤다. 간단한 어플인데도 구성하기가 너무 어렵다.오늘은 여러 블로그, 깃허브를 돌아다니며 레퍼런스로 잡을만 한 어플리케이션을 찾으러 다녔다. 그 중에 하나는 깃허브에 JakeLin님이 제작하신 어플리케이션인데, 공부할 때 종종 보며
https://school.programmers.co.kr/learn/courses/30/lessons/12945
Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요.갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수
static 키워드르 사용해서 프로퍼티를 정의할 경우, 해당 프로퍼티는 타입 프로퍼티로 정의된다.그래서 타입 프로퍼티가 뭐냐면...타입 자체에 속하는 프로퍼티, 복사본이 하나만 존재하는 프로퍼티타입의 모든 프로퍼티에 전역인 값을 저장하는 프로퍼티 변수와 같은, 모든 인
didSelectRowAt: 매개변수를 가지고 있는 tableView 함수를 선언하면 touch up inside 이벤트가 cell위에서 발생할 때, 해당 cell의 indexPath를 반환하고 수행할 동작들을 작성할 수 있더라. 이를 사용해서 현재 만들고있는 할 일
위의 코드는 UILabel의 attributedText 프로퍼티에 취소선을 구현해주는 구문의 한 부분이다. 난 여태껏 이 구문을 취소선 구현해야하는 부분마다 적어서 사용했는데, 보다 코드를 짧게 만들 수 있는 방법인 extension을 사용하는 방법을... 이제야 알았
본 프로젝트는 스파르타 코딩클럽 iOS 앱개발 부트캠프 과정 중 개인 과제로 작성된 할 일 관리 어플 프로젝트입니다. 모든 프로젝트 파일들은 제 깃허브에 업로드되어 있습니다.앞으로 추가할 할 일에 대한 데이터를 정리할 구조체 Todo를 선언해줬다.TodoListView
1. 이번 주 팀 과제 스타벅스 키오스크 만들기 심플하게 계획서를 작성했다. 개요부터 시작해서 와이어프레임, 개발할 기능까지... 보이는 것 처럼 개발하는 것이 목표! 내가 맡은 역할은 상단에 에스프레소, 콜드브루, 프라푸치노, 블렌디드 이 네개의 메뉴를 선택했
팀원들 모두가 dev 브랜치를 clone 한 후, 앞으로 각자 맡은 기능을 개발할 브랜치를 생성한다.예를 들어 내 브랜치 feature-yhkim 를 생성했다면, 맡은 기능에 대해서 개발을 쭉쭉 진행하면 됨!이런 식으로 작업을 진행하다보면, 누군가 작업을 먼저 끝마친
위의 화면에서 UISegmentControl에 나타난 에스프레소, 콜드브루 등의 메뉴를 탭했을 때, 아래에 위치한 CollectionView에서 적절한 이미지와 텍스트로 이루어진 셀이 나타나도록 하는 것이 목표였다.아래와 같은 코드로 구현을 해봤다.이 코드는 전체 뷰를
TableViewCell 클래스 내부에 구현하고 싶은 동작의 반환값을 가지는 클로저를 정의한다.var increaseButton: (() -> ())? 예시로 적은 코드에서 보다시피 버튼을 누르면 해당 클로저가 실행되도록 할 것이고, 이 내용을 @IBAction 함수
내일배움캠프 iOS 앱개발 기초 프로젝트 SPARTABUCKS KIOSK > 메인페이지, 상단 메뉴 카테고리 바, 메뉴화면, 주문 내역 화면, 취소/결제하기 버튼 등 5개의 기능으로 구성되며 하나의 ViewController에서 구동되는 키오스크를 제작하는 프로젝트
프로그램의 실행 코드가 저장되는 공간, 컴파일된 소스 코드와 프로그램의 명령어들이 저장읽기 전용이며, 프로그램이 실행되면서 수정되지 않음전역 변수와 정적 변수, 상수가 저장되는 곳프로그램 시작 시 할당되며, 프로그램 종료까지 유지됨프로그램 실행 중(런타임) 동적으로 할
HTTP 프로토콜 기반, 클라이언트와 서버 간의 통신을 위한 규칙 정의GET: readPOST: createPUT: updateDELETE: deleteREST API 에서의 모든 데이터가 자원으로 표현됨. 고유한 식별자(URI)를 가짐자원의 상태를 일반적으로 JSON
위의 구조체의 category 값에 따라서 tableView의 section을 나누어서 tableViewCell들을 그려보자...일단 Todo 구조체 내부의 category 변수를 사용해서 tableView의 section을 나눠주기 위해서 딕셔너리 형태의 sectio
1.
JSON데이터를 받아서 디코딩하는 부분까지는 성공했다.내일은 이 JSON 데이터를 가지고 기필코 이미지를 불러올 것...
해당 프로젝트는 y0unghyun github에서 보실 수 있습니다.사용자가 해야할 일을 적어서 관리할 수 있는 Todo 구조체와,고양이나 강아지의 사진을 볼 수 있는 PetView에서 네트워크 통신을 통해 받아올 JSON 데이터를 Decodable하게 저장하는 Pet
위의 과정을 통해서 루비(Ruby) 버전을 업데이트하고 컴퓨터에 잘 설치했다면, Cocoapods를 설치해서 Naver Maps API를 사용할 준비를 해야 한다.위 명령어를 통해서 cocoapods를 설치하는데 성공했다면, 코코아팟 라이브러리를 적용하고 싶은 디렉토리
TabBarController 클래스를 하나 선언해주고, 이 안에서 사용하고 싶은 탭의 갯수만큼 탭 객체를 만들어 준다.tabBarItem을 만들 때 탭에 표시될 이미지를 넣을 수 있는데, 지금은 마땅한 아이콘 에셋을 구하지 않아서 nil로 두었지만 에셋이 있는 경우에
비전공자 4명이 팀을 이루어 진행한 프로젝트입니다. 다소 어설픈 부분이 (많이)있을 수 있습니다.프로젝트는 깃허브에서 보실 수 있습니다.저는 프로젝트에서 회원가입/로그인 화면 직후 진입할 수 있는 지도 뷰를 작성했습니다.Naver의 지도 API인 NMapsMap, 사용
시스템 전체의 구조와 조직을 결정하는 프로세스주로 데이터 구조체 struct나, class로 표현됨DB나 네트워크와 같은 외부 데이터 소스와의 상호작용 담당사용자가 실제적으로 볼 수 있는 것들로 이루어짐사용자의 입력을 받아 controller에 전달, model의 데이
AV 리소스를 처리하고, 카메라를 제어, 오디오 처리, 시스템 오디오와의 상호 작용을 할 수 있게 해주는 프레임워크플레이어 콘텐츠를 표시하고, 재생을 제어하기 위한 기본적 UI(User Interface) 제공UI를 커스텀할 수도 있는데, 이는 AVAsset 이나 AV
뷰의 크기, (상대적) 위치를 정의하는 규칙주로 Interface Builder 또는 코드로 설정됨Autoresizing masks는 iOS 6 이전에 사용된 레이아웃 시스템Constraints를 사용하여 레이아웃을 구성하는 것이 더 강력하고 유연한 방법translat
오프라인 사용을 위한 앱의 영구 데이터를 저장, 임시 데이터 캐시 등의 동작을 수행단일 iCloud 계정의 여러 장치에서 데이터 동기화를 할 수 있도록 자동으로 스키마를 CloudKit 컨테이너에 미러링 해줍니다.Core Data를 사용하기 위해서는 Core Data
인스타그램 어플 화면을 따라 그리는 중입니다... 정리가 되는대로 내용을 채워보겠습니다...나 파이팅..!
어떻게 해야 최대한 깔끔하게 코드를 작성할 수 있는지 고민하며 프로젝트를 진행하려 했습니다.근데 실력이 좋지 않아서 깔끔하지 못한 코드가 나온... 초보인 점을 양지해주시길...!일단 레퍼런스로 받은 이미지대로 요소를 하나씩 만들어주기 시작했다.UILabel, UIIm
AutoLayout을 조금 더 쉽게 사용할 수 있도록 만들어주는 Framework깊이있게 다루지 않고 SnapKit 공식 Document를 옮겨적는 수준의 포스트가 될 것...저번에 한 번 프로젝트에 NaverMapAPI를 사용할 일이 있어서 Cocoapods를 사용해
이번 프로젝트는 난이도 별로 주제가 정해져 있었는데,난이도 상 : 날씨 어플리케이션난이도 중 : 단어장 어플리케이션난이도 하 : 할 일 어플리케이션민주주의에 입각하여, 우리 팀은 난이도 중의 단어장 어플리케이션을 선택했다.어플리케이션 필수 기능은단어장 추가 기능단어장에
이번 프로젝트에서 만드는 앱의 테마(?) 색상을 Asset으로 추가했다. sRGB(255, 255, 255)값을 기준으로 컬러를 넣었다.Xcode 내장 기능인지는 모르겠는데, 네이밍을 보다시피 Team332Color로 했더니, UIColor.team332 와 같이 색상
솔직히 말해서... 오늘 배운건 없고, 했던 일들을 나열해 보도록 하겠습니다... 또 앞으로 프로젝트 내에서 어떤 역할을 소화해야 할 지 개인적으로 정리가 되지 않았기 때문에 여기에 끄적이며 정리하는 시간을 가져보도록 하겠습니다. 프로젝트 이름 정하기 사용자가
뷰 바탕화면을 그라데이션을 줘서 만들고 싶었어요...그래서 찾아본 방법이 CAGradientLayer를 활용해서 적용할 수 있었다. layer.colors 에는 cgColor 값만 들어갈 수 있었어서... 그래서 뒤에 cgColor 를 붙여줬더니 색깔이 잘 나왔다. 굳
Cocoapods를 사용해서 프로젝트에 필요한 프레임워크를 다 추가해 두었는데...프로젝트에 필요한 프레임워크를 한 번에 다 세팅해두지 못하고, 하나씩 나중에 추가하려다 보니 계속 pod install 해줘야 하는 불편함도 있고,무엇보다 프로젝트 deployment t
뭘 안해서인지는 모르겠는데, AppCheck failed: 'The operation couldn’t be completed. The attestation provider DeviceCheckProvider is not supported on current platfo
THREAD 1: EXC_BAD_ACCESS
오늘은 데이터 넣고 읽고 지울 수 있는 메서드를 만들었습니다.데이터 수정 메서드는 오류가 있기 때문에 수정하는 중 ^^Firebase 공식 문서에는 매 연산마다 try 키워드와 await 키워드를 사용해서 비동기, 에러 처리를 해줘야 하는 것으로 나오는데, 어제의 TI
계층화된 데이터를 Firestore에 저장해보기
약 복용 히스토리를 기록하기 위해서 createPillRecordData, readPillRecordData 함수를 만들어 두었습니다...CalendarVC에서 DataManager를 사용해 DB에 저장된 데이터로 TableView를 그릴 수 있도록 하는 중입니다.앱
대략 로직이 완성되어 가는 중입니다...Firestore -> client 데이터 fetch가 이루어져 사용자의 안구로 도달할 수 있도록 열심히 검증이 되지 않은 로직을 구현 중입니다.Firestore -> client 방향으로 데이터 fetch 하는 기능을 구현할 때
1. Pillanner
pull down 버튼을 사용해서 이미 추가된 약 복용 알람을 수정하거나 삭제하는 기능을 구현하려고 합니다.위의 코드블럭에서와 같이 수정, 삭제 기능을 추가하려고 했으나 문제가 생겼죠?TableViewCell에서는 ViewController에서와 같은 present 메
전화번호 인증, 인증번호 입력 등의 TextField에서는 숫자만 입력이 되어야 합니다그래서 해당 TextField를 터치했을 때, 사용자에게 팝업되는 키패드의 종류를 .numberPad 형식으로 고정시켰습니다.복용 시간에 맞춘 알람을 설정하는 부분에서, 동일한 시간의
오늘 한 일 Pillanner 어플리케이션에서 약 복용 알람이 동일한 시간에 설정될 수 있었던 현상을 수정했습니다. 이제는 같은 시간에 2개 이상의 알람을 설정할 수 없습니다. 알람 시간을 설정하는 뷰에서 특
코드 가독성을 높이는 작업을 진행했습니다.각 요소의 자리를 재배치하고, 크기 등을 재조정했습니다.복약 알람을 설정하는 뷰 파일에서 요소들의 크기가 고정된 픽셀 값으로 설정되어 있는 부분을 수정했습니다.앞으로 기기의 화면 해상도 비율에 따라 요소가 표시됩니다.알람이 저장
Pillanner 기능 추가 이제 섭취 요일을 선택하는 뷰에서 "매일" 버튼을 터치하여 월~일요일 모두를 한 번에 선택할 수 있습니다.
한국 시간으로 6/11 02:00에 진행된 애플의 신기술 발표회(??)라는데, 솔직히 자다가 3시쯤 깨서 잠결에 10분 정도 유튜브로 보고 다시 잠들었습니다...오후에 다시 정주행하고 관심있는 부분만 정리해보도록 하겠읍니다.저는 이제 개발 공부를 시작한 사람이기에...
Apple Intelligence는 디바이스에서의 데이터를 기반으로 Personal Context를 이해합니다!알람, 캘린더 등에 작성된 스케쥴을 읽고 이를 이해하여 사용자가 앞으로 어떻게 움직여야 하는지? 운전해야하는 경로를 알려준다던지 등의 기능을 제공할 수 있다는
뭐 하려다 보니 UIPickerView를 자유롭게 사용할 수 있으면, 사용자의 입력을 제한적으로 받아오는데 많은 도움이 될 것 같아서! 아직도 제대로 사용하지 못하는 UIPickerView를 어떻게 사용하는지 알아보겠습니다.일단은 입력받고 싶은 값을 쫘라라라라ㅏ라라라라
체육관 관장님이 인터벌 타이머를 사용해서 저를 굴리는 모습을 보고, 제가 직접 인터벌 타이머를 만들어서 사용하고 싶은 생각이 들어 제작하게 되었습니다.인터벌 타이머 기능만을 가지고 있습니다.타이머가 시작된 이후에, 정지 버튼을 사용해서 타이머를 정지시킬 수 있습니다.일
왜 갑자기 GCD가 나오느냐면, 간단한 인터벌 타이머 어플을 하나 만들면서 UI 업데이트와 사운드 재생의 딜레이를 해결할 때 GCD를 이용했기 때문...Execute code concurrently on multicore hardware by submitting wor
프로그래머스 42568번 [기능개발] 문제 풀이