최근에 새로운 프로젝트의 로그인 화면을 만들고 있는데요. 도중에 비밀번호 찾기 화면을 만들던 도중에 Text로 사용자의 이메일 주소를 보여주는 상황이 있었습니다. 위와 같은 형태로 Text를 화면에 띄우면 아래처럼 이메일 주소가 파란색 + 밑줄의 조합으로 표시됩니다.
코딩테스트 연습 - 배달 문제 풀이 아이디어 플로이드 와샬 알고리즘 문제를 풀기 위해서는 일단 1번 마을과 다른 마을 사이의 최단경로를 구해야 합니다. 1번 마을과 직접 연결된 도로 뿐만이 아니라 다른 마을을 건너서 가는 경로가 최단 경로가 될 수도 있습니다. 따
절대로 Truncated 되면 안되는 Text를 truncated를 방지하는 방법입니다. 예시 코드 이번에 새로운 프로젝트의 이메일 입력 화면을 만들면서 겪은 일입니다. 이메일 입력 화면을 만들면서 title과 text field 사이에 email의 포맷에 대한 안
코딩테스트 연습 - 두 큐 합 같게 만들기 문제 풀이 아이디어 그리디 알고리즘 문제의 목적은 두 “큐”의 합을 같게 하는 것입니다. 한 큐의 합이 다른 큐의 합과 다른 경우 두 큐의 차이를 줄일 수 있는 방법은 큰 큐에서 pop한 수를 작은 큐에 push하는 방법
코딩테스트 연습 - 행렬 테두리 회전하기 문제 풀이 아이디어 처음에 문제를 읽었을 때는 뭔가 규칙이 있을거라고 생각을 했는데요. 하지만 테두리를 회전이 다음 회전에 영향을 미치므로 규칙을 찾는 것이 불가능합니다. 따라서 직접 행렬을 이차원 배열로 구현하고 회전해서 답을 구해보도록 하겠습니다. 회전하는 코드는 조금 복잡해보이지만 결국에는 회전 방향에 따...
코딩테스트 연습 - 스티커 모으기(2) 문제풀이 아이디어 문제의 유형 자체는 DP에서 많이 본 문제입니다. i번째까지의 스티커를 떼었을 때의 최대값을 dp를 통해 0부터 구하고 마지막 스티커의 최댓값까지 구했을 때 그 값을 리턴하면 됩니다. i번째 스티커까지의 최댓
코딩테스트 연습 - [3차] 방금그곡 문제 풀이 아이디어 복잡한 알고리즘이 필요한 문제는 아닙니다만 주어진 String을 파싱하여 필요한 정보를 추출하는 과정이 필요합니다. #을 어떻게 처리할 것인가? 일단 #을 어떻게 처리할 지 생각을 해봅시다. 일반적인 음계
코딩테스트 연습 - 수식 최대화 문제 풀이 아이디어 문제를 보면 상당히 복잡한 것 같지만 단계를 쪼개서 보면 각각의 해결 방안은 생각보다 쉽습니다. 총 3파트로 나누어서 문제를 해결해보도록 하겠습니다. String으로 주어진 식을 연산자와 피연산자로 분리하기 주
코딩테스트 연습 - 보석 쇼핑 문제 풀이 아이디어 Two Pointer 이 문제를 처음 봤을 때는 gems를 dfs 등을 사용해서 gems 내에 모든 범위를 구하고 그 범위가 주어진 조건에 부합하는지 확인하는 방법을 생각했습니다만, gems 배열의 크기가 최대 1
실무를 하다보면 디자이너가 iOS에 내장된 시스템 폰트 이외의 다른 폰트를 사용할 때가 있습니다. 프로젝트에 원하는 폰트를 추가하는 방법을 알아봅시다. 프로젝트에 Font 파일 추가하기 Navigator의 좌하단에 있는 “Add File to ~”를 통해서 원하는 폰트 파일을 추가합니다. 그냥 Finder에서 복사를 하면 프로젝트 파일에서 인식하지 못하...
실무를 하는 중에 디자이너와 협업을 하다보면 사용할 색을 미리 정해놓고 쓰는 경우가 있습니다. 이 경우 코드에 RGB 값을 사용해서 아래와 같이 전역에 정의해놓고 사용하는 경우가 많습니다. 하지만 위와 같은 방식은 수정하기도 쉽지 않고 색을 직접 확인할 수 없기 때문에 실수의 가능성도 높습니다. 그리고 앱의 다크모드를 구현하는 경우 코드에서 색을 전부 구...
이번에 새로운 프로젝트를 시작하면서 테스트를 위해서 iOS에서 테스트 작성을 도와주는 Quick과 Nimble이라는 라이브러리를 SPM을 활용해서 설치했습니다. 하지만 이 라이브러리를 설치하자마자 아래와 같은 에러가 나면서 빌드가 되지 않았습니다. 🚫 에러 메시지
만들고자 하는 View 이번에 실무에서 아래와 같은 뷰를 만들어 달라는 요청을 받았습니다. 탭을 할 때마다 녹색, 노란색, 빨간색 원이 차례로 선택됩니다. 선택된 원은 다른 원 보다 알파값이 높고 크기도 조금 더 큽니다. 그리고 선택지가 바뀔 때 마다 각각의 원이 작아졌다가 다시 커지는 애니메이션을 구현해야 합니다. .transformEffect로 만들...
코딩테스트 연습 - 불량 사용자 문제 풀이 아이디어 문제의 조건과 예시를 보면 불량 사용자를 의미하는 “*”이 들어간 불량 id는 여러 개의 id와 매칭이 될 수 있습니다. 반대로 하나의 id가 여러 개의 불량 id와 매칭이 될 수 있습니다. id와 불량 id는 1
코딩테스트 연습 - 삼각 달팽이 문제 풀이 아이디어 처음에 문제를 보았을 때는 이차원 배열을 사용하지 않고 할 수 있는 방법도 있지 않을까 생각을 했습니다만, 삼각 달팽이를 직접 구현하지 않고 푸는 것은 불가능합니다. 따라서 이차원 배열로 삼각 달팽이를 직접 구현한
코딩테스트 연습 - 기지국 설치 아파트를 순회하는 풀이: O(N), N은 최대 200,000,000 문제 풀이 아이디어 1번 아파트부터 순회하면서 그리디 알고리즘을 활용해서 풀면 됩니다. 총 4가지 케이스가 있습니다. 현재의 아파트가 전파가 닿지 않을 때
코딩테스트 연습 - 메뉴 리뉴얼 문제 풀이 아이디어 주어진 주문을 가지고 세트 메뉴를 만들어야 하는데요. 세트 메뉴를 만들 때는 순서는 관계 없으니까 조합을 사용해서 세트 메뉴를 구현하면 됩니다. 각각의 주어진 order를 가지고 세트 메뉴가 될 수 있는 세트 후보
만들고자 하는 기능 만들고자 하는 기능은 아래 캡쳐와 같습니다. 수정하기 모드일 때 단어 Cell을 클릭하면 해당 단어를 수정할 수 있는 모달을 띄우는 것입니다. 기존의 Modal과 다른 점 모달을 띄운다는 점에서 기존의 모달과 크게 다른 점은 없어보이지만 하나
만들고자 하는 뷰 현재 제가 만들고자 하는 뷰는 아래와 같습니다. 일단 기존의 단어 Cell 위에 ZStack으로 이미지를 올립니다. 그리고 이 상태에서 Cell을 터치하게 되면 단어 수정을 위한 Modal을 띄우는 것입니다. 하지만 그냥 Image에 onTapGe
코딩테스트 연습 - 쿼드압축 후 개수 세기 문제 풀이 아이디어 쿼드 압축의 과정을 보면 이차원 배열을 압축할 수 없으면 해당 배열을 1/4한 이후에 같은 과정을 반복하면서 압축을 하고 있습니다. 그리고 이차원 배열의 크기가 1 x 1가 되어서 더 이상 압축할 수 없