본문 바로가기

분류 전체보기331

"1억 번"의 법칙? 코딩 테스트에서 시간 복잡도를 읽는 눈을 키우자 코딩 테스트를 풀다 보면 자주 마주치는 고민이 있다.“이 코드, 시간 안에 돌아갈까?” 문제의 난이도는 종종 입력의 크기(N)와 제한 시간(보통 1~5초)에 따라 결정되는데,이를 가늠할 줄 아는 능력은 실력의 기준선이 된다. 이번 글에서는 코딩 테스트에서 반드시 알고 있어야 할시간 제한 기준과 시간 복잡도 판단법을 정리해본다.   🚦 시간 제한 1초 = 약 1억 번 연산 가능코딩 테스트 환경은 보통 아래 기준으로 설계된다.제한 시간: 1~5초1초에 약 1억 번 연산 가능 (기준 CPU 성능 가정)즉, 입력 크기 N이 주어졌을 때,내가 짜려는 알고리즘이 몇 번 연산을 수행할지 미리 감을 잡아야 한다.    ⏱️ 시간 복잡도별 연산 가능 횟수시간 복잡도1초 기준 연산량설명O(N)약 1억 번선형 탐색, 단순.. 2025. 3. 29.
1화. 처음 가르치는 날 📜 1화. 처음 가르치는 날 시계를 보니 새벽 두 시.이미 한참 전에 자야 할 시간이었지만, 나는 핸드폰을 들여다보고 있었습니다. “형, 버튼이 사라졌어요.” 피식. 이게 뭐라고, 새벽까지 붙들고 있나 싶었습니다. “어떤 버튼?”“스토리보드에서 추가했던 버튼이요. 분명 넣어놨는데 실행하면 안 보여요.”이거 완전, 입문자 때 한 번쯤은 겪는 일.이쯤 되면 내가 예상할 수 있는 이유가 몇 가지 있습니다.“이걸 그냥 대충 말로 설명하는 것보다, 정리를 해야겠다.”나는 메모장을 열었습니다.  버튼이 사라지는 이유 AutoLayout이 없어서 → 버튼을 화면에 추가했지만, 위치를 고정하는 설정이 없으면 해상도에 따라 사라질 수 있음.Hidden 속성이 활성화됨 → 혹시 모르니 속성 창에서 isHidden이 체크.. 2025. 3. 17.
0화. Intro 📜 Intro저는 서른을 훌쩍 지나 나이 마흔을 향해 달리는 직장인입니다. 누구나 알만한 적당히 큰 대기업에 다니며 흔히 말하는 사진 박힌 사원증을 목에 걸고, 아침엔 굳은 표정으로 출근하고, 점심이면 커피를 들고 햇볕을 쬐러 건물 밖으로 나왔다가, 퇴근만 기다리는 그런 흔해빠진 소위 아재 직장인입니다.  결혼을 했고, 아이를 키우고 있고, 살아가고 있습니다.그렇게 특별할 것 없이 하루가 반복됩니다.  이런 삶이 나쁘다고는 생각하지 않습니다. 다만 가끔은 생각이 많아지는 날이 있습니다.밤늦게 혼자 남아 과거를 돌아보게 되는 날.  그때였었죠. 제가 가르치면서 생기가 돌았던 것 같습니다. 하루가 단순한 반복이 아니었던 때. 누군가에게 무언가를 설명하고, 가르쳐 주면서 저도 덩달아 배웠던 순간들. 그 시절.. 2025. 3. 17.
"왜 우리 팀은 항상 늦을까?" 애자일이 답이 될 수 있을까? "왜 우리 팀은 항상 늦을까?" 애자일이 답이 될 수 있을까? 🤔 "개발 일정이 계속 밀려요...""기획이 바뀌었는데, 이제 와서 수정할 시간이 없어요!""고객 피드백을 반영하려면 처음부터 다시 개발해야 해요."   이런 고민, 개발팀이라면 한 번쯤 해본 적 있지 않을까요? 🤯이 문제를 해결하기 위해 많은 팀이 애자일(Agile) 방법론을 도입하고 있습니다. 하지만 "애자일이 대체 뭐야?" 라는 의문이 들 수도 있습니다.오늘은 애자일이 무엇이고, 기존 워터폴 방식과 어떤 차이가 있는지 알아봅니다!  💡 애자일이란? 애자일(Agile)은 변화하는 요구사항에 빠르게 대응하는 소프트웨어 개발 방법론입니다.  기존의 워터폴(Waterfall) 방식이 "처음에 계획한 대로 끝까지 진행"하는 것이라면, 애자일.. 2025. 3. 14.
Swift Concurrency - Async / Await 로 시작하기 안녕하세요! 오늘은 iOS 개발에서 비동기 프로그래밍을 쉽게 만들어주는async와 await에 대해 알아보겠습니다. 💡 비동기 프로그래밍이란?비동기 프로그래밍은 시간이 오래 걸리는 작업을 수행하는 동안, 다른 작업을 멈추지 않고 동시에 실행할 수 있도록 하는 프로그래밍 방식입니다.iOS 앱에서는 네트워크 요청, 파일 입출력, 데이터베이스 조회 등의 작업이 대표적인 비동기 작업입니다.예를 들어, 사용자가 앱에서 버튼을 눌러 데이터를 가져올 때, 데이터를 가져오는 동안 앱이 멈추지 않고 다른 기능을 사용할 수 있도록 해야 합니다.이때 비동기 처리가 필요합니다. 🚀 Swift 5.5와 함께 등장한 async/await! Swift 5.5는 2021년 9월에 출시되었으며, Apple은 이를 WWDC 2021.. 2025. 3. 10.
24년 10월 회고(사후) 2024년 10월 리뷰결과물주요 기능 구현이미지 필터 기능CI필터를 이용하여 대비, 밝기, 비네트 효과 구현.CI필터의 컬러 매트릭스를 활용하여 커스텀 컬러 필터 구현:배열 내 수를 CIVector로 변환하여 필터 생성.이미지 회전 기능이미지 회전 시 뒷면 여백이 보이지 않도록 확대 로직 함께 구현.회전 시 발생할 수 있는 시각적 문제를 효과적으로 해결.블러 기능선형 블러 및 원형 블러 구현:CILayer를 사용하여 화이트 마스크 생성.핀치, 펜, 회전 제스처를 사용하여 사용자와의 상호작용 강화.텍스트 및 이미지 스티커 기능AutoLayout 대신 Frame을 사용하여 유연하게 구현.펜, 핀치 제스처를 통해 사용자 경험 향상.스티커 이미지 다운로드RESTful API 연동을 통해 스티커 이미지 다운로드 .. 2024. 12. 31.
24년 9월 회고(사후) 2024년 9월 리뷰결과물복귀 후 주요 프로젝트CGV 하이브리드 앱 - 플러그인 호출 - iOS 네이티브 기능 구현.PhotoPlay 플러그인 구현:클린 아키텍처 및 플러그인 패턴을 활용.기존 호출된 플러그인에 연결하여 화면을 구현.구체적인 구현 작업UI 작업버튼 동작 정의 및 커스텀 rulerView UI 구현.콜렉션 뷰 구현 및 탭바 선택에 따른 5가지 화면 구현.크기 선택 기능포토플레이에서 크기를 선택하면 여백이 다른 3가지 모드로 변경되는 기능 구현.Firebase 성능 모니터링Firebase 성능 모니터링 연동 작업 진행.이미지 필터 선택 및 UI 동작이미지 필터 선택 시 UI와 상호작용하는 동작 구현.목표와 방향성목표복귀 직후 빠르게 프로젝트에 적응하며 클린 아키텍처와 플러그인 패턴을 활용한 .. 2024. 12. 31.
24년 8월 회고(사후) 2024년 8월 리뷰결과물작성한 TILSynchronous vs Asynchronous Concepts in Programming동기와 비동기 개념에 대한 기본적인 이해와 차이를 정리.프로그램의 실행 흐름에서 두 개념이 어떻게 작동하는지 설명.Async and Concurrent Concepts in Programming비동기 및 병렬 처리에 대한 심화 학습 내용 정리.iOS 개발에서 async/await를 사용하는 방법과 적용 사례 설명.주요 교훈동기와 비동기, 병렬 처리를 개념적으로 명확히 이해하게 됨.TIL 작성 과정을 통해 iOS에서의 비동기 작업과 병렬 처리의 효율성을 재확인.목표와 방향성목표TIL 작성을 통해 학습 내용을 체계적으로 정리하고, 실제 개발에 적용 가능성을 높임.iOS 비동기 작업.. 2024. 12. 31.
24년 7월 회고(사후) 2024년 7월 리뷰결과물이직 준비 활동여러 기업에 지원하고, 실기 테스트 두 가지를 진행함:사진첩 앱 구현: 복잡한 콜렉션 뷰 구현 요구.알고리즘 테스트 (영어로 진행): 이전보다 쉬운 느낌이었으나, 언어 장벽으로 어려움이 있었음.주요 교훈콜렉션 뷰 구현:단순한 콜렉션 뷰가 아닌 복잡한 로직과 사용자 인터페이스를 포함한 콜렉션 뷰 구현에서 어려움을 느낌.이러한 구현을 원활히 하기 위해 더 많은 실습과 구조적 이해가 필요함.알고리즘 문제 풀이:알고리즘을 정확히 이해하고 구현하는 것보다 표면적으로 접근하는 경향을 확인.실전 중심의 알고리즘 연습과 언어 장벽 극복 필요성 인식.목표와 방향성목표이직 준비를 계속 이어가며 기술 테스트 대비.실행의 어려움육아와 병행하며 학습 및 준비 시간이 충분히 확보되지 않음... 2024. 12. 31.
24년 6월 회고(사후) 2024년 6월 리뷰목표6월 목표알고리즘 숙련을 위한 Swift 문법 강화아키텍처 패턴 숙련도 향상RxSwift 개념 재검토세부 계획프로그래머스 일일 과제를 통한 흥미 유발 및 필수 알고리즘 10가지 습득기본적인 알고리즘 개념 익히기Swift로 알고리즘 구현 연습문제 많이 풀어보기UIViewController를 MVC -> MVP로 변환하는 연습Unit Test 코드 작성 연습주요 활동알고리즘 테스트 준비프로그래머스의 일일 알고리즘 과제를 꾸준히 진행했으나, 벼락치기 방식으로 연습한 점이 한계로 작용.6월 4일 알고리즘 테스트에서 복잡한 입력값과 풀이 과정으로 인해 어려움을 경험.육아와 학습 병행육아로 인해 학습 시간을 확보하기 어려운 상황 발생.예상치 못한 변수들로 인해 목표 달성이 어려웠음.학습 시간.. 2024. 12. 31.