전체 글
-
99클럽 코테 스터디 2일차 TIL / 랜선 자르기iOS & Swift/99클럽 2025. 1. 14. 22:26
백준 1654번 랜선 자르기 (이분 탐색)https://www.acmicpc.net/problem/1654 문제집에서 시간을 보내던 오영식은 박성원의 부름을 받고 급히 달려왔다. 박성원이 캠프 때 쓸 N개의 랜선을 만들어야 하는데 너무 바빠서 영식이에게 도움을 청했다.이미 오영식은 자체적으로 K개의 랜선을 가지고 있다. 그러나 K개의 랜선은 길이가 제각각이다. 박성원은 랜선을 모두 N개의 같은 길이의 랜선으로 만들고 싶었기 때문에 K개의 랜선을 잘라서 만들어야 한다. 예를 들어 300cm 짜리 랜선에서 140cm 짜리 랜선을 두 개 잘라내면 20cm는 버려야 한다. (이미 자른 랜선은 붙일 수 없다.)편의를 위해 랜선을 자르거나 만들 때 손실되는 길이는 없다고 가정하며, 기존의 K개의 랜선으로 N개의 랜..
-
99클럽 코테 스터디 1일차 TIL / 암기왕iOS & Swift/99클럽 2025. 1. 13. 20:41
백준 2776번 암기왕https://www.acmicpc.net/problem/2776 문제연종이는 엄청난 기억력을 가지고 있다. 그래서 하루 동안 본 정수들을 모두 기억 할 수 있다. 하지만 이를 믿을 수 없는 동규는 그의 기억력을 시험해 보기로 한다. 동규는 연종을 따라 다니며, 연종이 하루 동안 본 정수들을 모두 ‘수첩1’에 적어 놓았다. 그것을 바탕으로 그가 진짜 암기왕인지 알아보기 위해, 동규는 연종에게 M개의 질문을 던졌다. 질문의 내용은 “X라는 정수를 오늘 본 적이 있는가?” 이다. 연종은 막힘없이 모두 대답을 했고, 동규는 연종이 봤다고 주장하는 수 들을 ‘수첩2’에 적어 두었다. 집에 돌아온 동규는 답이 맞는지 확인하려 하지만, 연종을 따라다니느라 너무 힘들어서 여러분에게 도움을 요청했..
-
String, Character Instance Method/Property 모음카테고리 없음 2025. 1. 3. 19:46
String, Character 관련 인스턴스 메소드에 대하여 정리합니다. (계속해서 추가 예정..) Character 대/소문자 판별 isUppercase / isLowercase - 대문자/소문자 인지 판별, Bool type uppercased() - 소문자 -> 대문자로 변환, String type 반환 lowercased()- 대문자 -> 소문자로 변환, String type 반환 문자열 배열로 분리하기 Split- 구분자에 따라 문자열을 분리합니다. [SubString]을 반환합니다. func split( separator: Self.Element, // 구분자 maxSplits: Int = Int.max, // 최대 분리 개수(해당 크기 이상은 구분자가 있어도 나누지 않음)..
-
구글 엔지니어는 이렇게 일한다 - 23장, 24장BOOK/구글 엔지니어는 이렇게 일한다 2024. 5. 12. 14:23
23장 지속적 통합정의팀원들이 작업 결과를 자주 통합하는 소프트웨어 개발 방식통합할 때마다 자동 빌드(테스트 포함)하여 통합 오류를 빠르게 찾아 냄기본 목적문제를 일으키는 변경을 가능한 한 조기에 자동으로 발견해내는 것우리는 CI를 이용하여 ‘적절한’ 테스트를 ‘적시에’ 수행하는 이 섬세한 작업을 왜 최적화해야 할까요? … CI는 애플리케이션이 다음 단계로 나아갈 수 있다는 검증 가능한 근거를 적시에 제시해줍니다. 막연히 모든 기여자가 매우 신중하고 책임감 있고 철저하기를 기도하지 않아도 됩니다. 대신 CI는 빌드부터 릴리스까지 가는 길목길목에서 애플리케이션이 제대로 동작하고 있음을 보장해줍니다.우리는 CI 덕에 제품 품질과 팀 생산성을 더욱 신뢰할 수 있습니다.23.1 지속적 통합이란?23.1.1 빠른..
-
구글 엔지니어는 이렇게 일한다 - 18장, 19장, 20장BOOK/구글 엔지니어는 이렇게 일한다 2024. 5. 12. 14:17
18장 빌드 시스템과 빌드 철학18.1 빌드 시스템의 목적훌륭한 빌드 시스템은 다음 두 가지 중요 속성을 최적화 함속도개발자가 명령 하나로 빌드를 수행하고 몇 초 안에 결과 바이너리를 얻을 수 있어야 함정확성소스 파일과 기타 입력 데이터가 같다면 모든 개발자가 어떤 컴퓨터에서 빌드하더라도 항상 동일한 결과를 내어줘야 함테스트 목적으로 머신들이 자동으로 빌드를 수행하기도 함 → CI자동 빌드 시스템이 워크플로에 도움을 주는 예사람의 개입 없이 코드가 자동으로 빌드되고 테스트 된 후 프로덕션에 배포 -> Xcode Cloud개발자 변경사항은 자동 테스트되어 코드 리뷰용으로 전달 됨18.3 모던 빌드 시스템18.3.1 핵심은 의존성이다여러 종류의 의존성들작업 사이의 의존성아티팩트 사이의 의존성본인 코드베이스에..
-
구글 엔지니어는 이렇게 일한다 - 16장BOOK/구글 엔지니어는 이렇게 일한다 2024. 5. 12. 14:12
(책을 읽으며 느낀 개인적인 사견이 회색 글씨로 작성되어 있습니다.)16장 버전 관리와 브랜치 관리16.1 버전 관리란?VCS(Version Control System)파일의 시간에 따른 변경 기록(버전)을 추적하는 시스템파일들의 메타 데이터를 관리, 메타데이터와 파일들의 버전별 복사본을 합친 것 → Repository여러 개발자가 같은 파일들로 동시에 작업할 수 있게 됨초창기는 파일 단위로 lock을 걸어 한 사람이 파일을 수정하는 동안에 다른 사람이 수정 못하게 하는 방식어느 버전이 최근에 동기화 되었는지 추적 → 커밋하려는 파일 중에 로컬로 마지막 동기화 후 리포지터리에서 변경 된 파일이 하나라도 있다면 해당 커밋 전체가 거부 됨rejected non-fast-forward16.1.1 버전 관리가 ..
-
구글 엔지니어는 이렇게 일한다 - 14장, 15장BOOK/구글 엔지니어는 이렇게 일한다 2024. 5. 12. 14:05
14장 더 큰 테스트더 큰 테스트의 특성느릴 수 있음밀폐되지 않을 수 있음다른 테스트나 최종 사용자와 자원 및 트래픽을 공유하기도 함비결정적일 수 있음밀폐되지 않은 테스트의 경우 다른 테스트나 사용자 상태에 영향을 받을 수 있음단위 테스트는 개별 함수, 객체, 모듈에 대한 확신을 심어줌더 큰 테스트들은 시스템 ‘전체’가 의도대로 동작한다는 확신을 더해주는 역할14.7 핵심 정리더 큰 테스트는 단위 테스트가 다루지 못하는 문제를 책임집니다.더 큰 테스트는 테스트 대상 시스템, 데이터, 동작, 검증으로 구성됩니다.위험을 식별해주는 테스트 전략과 그 위험을 완화해줄 더 큰 테스트까지 포함해야 좋은 설계입니다.더 큰 테스트가 개발자 워크플로에 마찰 없이 녹아들도록 관리하려면 더 많이 노력해야 합니다.15장 폐기..
-
구글 엔지니어는 이렇게 일한다 - 12장, 13장BOOK/구글 엔지니어는 이렇게 일한다 2024. 5. 12. 14:04
12장 단위 테스트구글에서 말하는 단위 테스트는 단일 클래스나 메서드처럼 범위가 상대적으로 좁은 테스트를 뜻합니다. 단위 테스트는 일반적으로 크기가 작지만 반드시 그런 것은 아닙니다.단위 테스트의 특징대체로 테스트의 크기가 작음 → 작은 테스트는 빠르고 결정적이기 때문에 개발자들이 수시로 수행하며 피드백 받을 수 있음코드와 동시에 작성할 수 있을만큼 작성하기 쉬움 → 커다란 시스템을 설정 or 이해할 필요 없음테스트 커버리지를 높이기 좋음커버리지가 높다면 코드 변경 시 동작이 망가지지 않는 다는 확신을 가질 수 있음개념적으로 간단하고 시스템의 특정 부분에 집중하기 때문에 실패 원인 파악에 용이함시스템 사용법, 의도한 동작 방식을 알려주는 문서자료 or 예제 코드 역할단위 테스트는 유지보수성이 굉장히 중요..