전체 글 140

Today I Learn - 숫자 야구 게임(Set VS Array)

Swift 문법을 응용해서 숫자 야구 게임을 만들어봅니다!숫자 야구 게임은 두 명이 즐길 수 있는 추리 게임으로, 상대방이 설정한 3자리의 숫자를 맞히는 것이 목표입니다. 각 자리의 숫자와 위치가 모두 맞으면 '스트라이크', 숫자만 맞고 위치가 다르면 '볼'로 판정됩니다. 예를 들어, 상대방의 숫자가 123일 때 132를 추리하면 1스트라이크 2볼이 됩니다. 이러한 힌트를 활용하여 상대방의 숫자를 추리해 나가는 게임입니다. Lv1. 정답이 될 수 있는 숫자의 조건정답은 랜덤으로 만듭니다.(1에서 9까지의 서로 다른 임의의 수 3자리) // 정답 숫자 랜덤 생성 func createAnswer() -> [String] { var numSet: Set = [] // Set은 중복 허용..

Today I Learn 2025.03.10

Today I Learn: UIAlertController에 TextField 추가 및 데이터 사용

오늘은 Alert에 TextField를 추가하는 방법을 알아보려고 한다.생각보다 아주 간단하다Alert에 TextField를 추가하기 전 Alert을 생성하는 방법에 대해 알아보자  https://developer.apple.com/documentation/uikit/uialertcontroller UIAlertController | Apple Developer DocumentationAn object that displays an alert message.developer.apple.com 우리가 아는 알림을 띄우는 컨트롤러이다  Alert 생성하기가장 기본적인 확인 버튼, 취소 버튼으로 구성된 Alert을 생성해보겠다 @objc private func createAlert() { l..

Today I Learn 2025.03.07

Today I Learn: UILabel 내부 Padding 설정하기

위와 같이, UILabel은 기본적으로 텍스트와 레이블 경계 사이의 여백을 설정할 수 있는 속성을 제공하지 않는다. 아래처럼 UILabel 내부 패딩을 제공해야 되는 상황에서 커스텀 UILabel을 만들어서 적용하는 방법을 포스팅하려고 한다.  UILabel 내부 패딩 설정 방법: drawText(in:) 인스턴스 메서드 사용https://developer.apple.com/documentation/uikit/uilabel/drawtext(in:) drawText(in:) | Apple Developer DocumentationDraws the label’s text, or its shadow, in the specified rectangle.developer.apple.com drawText(in:)공..

Today I Learn 2025.03.06

Today I Learn (4) : UIButton.AddTarget 데이터 전달 문제 리팩토링

https://soo-hyn.tistory.com/124 Today I Learn(3): 동적으로 뷰 추가 및 삭제보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.soo-hyn.tistory.com 이전 포스팅에서 사용한 UITapGestureRecognizer를 활용한 데이터 전달 문제를 리팩토링 하려고 한다  UUID 데이터 전달 문제 리팩토링ContentView의 내부 프로퍼티 사용 시 문제점 (기존 방식)ContentView 내부 id 값과 UITapGestureRecognizer로 넘겨준 id 값이 같은 뷰를 찾기 위해 contentStackView.arrangedSubviews를 모두 순회해야 한다뷰의 개수가 증가할수록 성능 저하가 발생할 수 있다 // content..

Today I Learn 2025.03.05

Today I Learn(3): 동적으로 뷰 추가 및 삭제

View의 자연스러운 추가, 삭제미니 프로젝트의 주제는 팀원 소개이다. 우리팀은 기본적인 정보를 필수로 받고 팀원마다 추가하고 싶은 정보를 커스텀하여 추가할 수 있는 기능을 기획했다. 추가하고 싶은 정보는 사용자마다 다르기 때문에, 레이아웃의 추가와 삭제가 자유롭도록 구현해야 한다. UI는 아래와 같다. ‘Add Content’ 버튼을 눌렀을 때, 정보를 입력할 수 있는 뷰가 추가되고, 각 뷰에 있는 삭제 버튼으로 해당 뷰를 삭제하는 기능이 포함된다. 첫 번째 시도: UITableView정보를 추가하는 뷰는 동일하고 delete Button에 대한 액션을 넣기 위해서 indexPath에 쉽게 접근할 수 있는 테이블뷰를 선택했다.ViewController에 contentCount 변수를 두고, number..

Today I Learn 2025.03.05

Today I Learn(2) : MVVM 정리하기

기간이 짧은 프로젝트의 초기인 만큼 디자인 패턴과 기술 스택에 대한 논의가 있었다.MVVM 디자인 패턴에 RxSwift를 쓰기로 했었지만, 프로젝트의 규모가 크지 않고 짧은 시간 동안 Rx를 배우고 적용하기엔 시간이 부족하다고 판단했다.결론적으로, 바인딩이 필수가 아닌 MVC 패턴으로 구현 후, 리팩토링하는 방식을 선택했다.오늘은 MVVM 디자인 패턴에 대해 복습할 겸 정리해보려고 한다. MVVM이란MVVM(Model-View-ViewModel)은 UI와 비즈니스 로직을 분리하여 유지보수성과 테스트 용이성을 높이는 디자인 패턴이다기존 MVC(Model-View-Controller) 패턴에서는 ViewController가 많은 일을 한다. Delegate, UI 업데이트, 네트워크 통신 등 ViewCont..

Today I Learn 2025.03.04

Today I Learn(1) : 프로젝트 설계

내일배움캠프 iOS 마스터 트랙이 시작됐다. 9 to 9 일정이 두렵기도 했지만, 끝나고 나면 분명 더 성장할 거라는 기대감이 훨씬 크게 느껴졌다OT 및 첫 프로젝트 시작오전 시간은 OT를 들었고 OT 후 바로 5일 간의 미니 팀 프로젝트가 시작됐다짧은 인사를 마치고 바로 프로젝트 회의를 시작했다프로젝트 주제: 팀원 소개 애플리케이션우리팀은 멤버 소개에 필요한 공통 데이터를 정의하고, 공통 데이터를 활용하여 각자 스타일에 맞게 멤버 카드 템플릿 UI를 구현하고 사용자가 여러 템플릿 중 하나를 선택하여 사용할 수 있는 앱을 개발하기로 했다.협업 방식첫 프로젝트인 만큼 우리팀은 서로의 코딩 스타일과 사용 기술을 파악하고 코드 리뷰를 통해 디벨롭하기로 했다. PM, 디자이너, 서버 개발자 없이 iOS 개발자 ..

Today I Learn 2025.03.03

알고리즘 문제(Swift) - 백준 - 1932 (정수 삼각형)

https://www.acmicpc.net/problem/19321. 문제의 재귀적인 구조 파악맨 위부터 아래로 내려오면서 선택된 수의 합의 최대 값을 구하는 문제아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중에서만 선택→ 다음으로 갈 수 있는 곳은 동일한 인덱스 또는 인덱스 + 1 위에서 index = 1을 선택했다면다음 층에서 인덱스 1, 2 선택 가능→ 현재 층의 인덱스 2는 이전 층의 인덱스 1과 인덱스 2에서 선택 받을 수 있음 2. 수식으로 표현f[i][j] = max(f[i - 1][j], f[i - 1][j - 1]) + score[i]i: 삼각형의 층j: 층 내 모든 수 3. 초기값 처리 (기저 조건)맨 왼쪽에 있는 수에서 f[i - 1][j -..