DEV (56) 썸네일형 리스트형 [iOS/Swift] Zip 함수 '단어 변환' 문제를 풀다가 zip함수에 대해 처음 알게 되었다.https://school.programmers.co.kr/learn/courses/30/lessons/43163# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 단어 변환은 DFS/BFS 문제인데 나는 그냥 단순히 순차적으로 비교하는 코드를 짰다.그런데 테스트 3번 케이스에서 막혔었다.Grok한테 물어보니 순서를 고려하지 않았다고 한다.내 코드는 단순히 contains()를 이용하여 해당 단어가 포함되어 있는지만 체크했었기 때문이다. 기존 코드import Foundationfunc solution(_ begin:String, _ targ.. [iOS/Swift] 상속(Inheritance)과 프로토콜(Protocol) 스파르타 부트캠프 프로그래밍 심화 주차 과제 마지막 문제에 상속과 프로토콜의 장단점, 차이점을 서술하는 과제가 있었다.상속과 프로토콜에 대해서는 알고 있었지만, 둘을 비교하여 생각한 적은 없었던 것 같다.둘의 장단점과 차이점을 알아보자.1. 상속(Inheritance)이란?상속은 클래스가 다른 클래스의 속성과 메서드를 물려받는 개념이다. 부모 클래스(Superclass)에서 정의된 기능을 자식 클래스(Subclass)가 재사용하거나 확장할 수 있게 해준다.상속의 장점코드 재사용성: 부모 클래스에서 정의한 코드를 자식 클래스에서 그대로 쓸 수 있어서 중복을 줄인다.계층 구조: 객체 간의 관계를 명확하게 표현한다. 예를 들어, Animal 클래스 아래에 Dog와 Cat을 두는 식으로 직관적인 설계가 가능하다.. [iOS/Swift] Sending 'closure' risks causing data races (data race) escaping closure 관련 문법 공부를 하는 도중 강의에 있던 코드와 똑같은 코드를 입력했는데도 아래와 같은 오류가 발생했다.Task-isolated, main actor-isolated, race 등의 단어가 눈에 뜨인다. 일단 경고 메시지에 관해 Grok에게 물어봤다. 일단 Task와 데이터 레이스에 대해 알아야 했다. TaskTask는 async(비동기) 작업의 단위이다.스위프트에서 DispatchQueue, OperationQueue, Thread 따로 없이 작성하면 main thread 인 sync로 동작 하는데, 이때 Task 블록으로 감싸서 async 코드를 수행할 수 있도록 제공한다.데이터 레이스데이터 레이스(data race)는 멀티스레드 프로그래밍에서 발생하는 동시성 문제 중 .. [iOS/Swift] Swift에서 정수로 String subscript가 안되는 이유? 다른 언어와 다르게 Swift에서 String은 subscript가 안된다.예를들어 str[0] 처럼 정수로 접근이 불가하고, String.Index를 사용해야 한다. 왜 그럴까?그 이유는 Swift의 String은 유니코드(Unicode)를 엄격히 준수하기 때문이다. Swift에서 String은 유니코드 문자열을 처리하도록 설계되었다고 한다.유니코드는 다양한 언어와 문자를 지원하기 위해 복잡한 구조를 가지고 있다.예를 들어, 이모지(emoji)나 특정 언어의 결합 문자(combining characters)는 여러 유니코드 스칼라 값으로 구성될 수 있다.또한, 직접적인 인덱스 접근은 유니코드 문자 경계를 무시할 가능성이 있어, 오류를 발생시킬 수 있다고 한다.따라서 String을 단순히 바이트 단위나 .. [iOS/Swift] 수열과 구간 쿼리 1, 2 문제 풀이 오늘은 알고리즘 특강 마지막날이었다.이번에는 두 문제를 풀어야 했다. 수열과 구간 쿼리 1첫번째 문제는 수열과 구간 쿼리 1https://school.programmers.co.kr/learn/courses/30/lessons/181883 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr이 문제는 생각보다 쉬웠다. 수열과 구간 쿼리 2https://school.programmers.co.kr/learn/courses/30/lessons/181923. 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 2라 .. [Git] Merge를 잘못했다.. 이와 같이 dev 브랜치에 내 브랜치를 pull request 한 후 merge를 하였다.하지만 내가 merge를 한 dev 브랜치는 예전 브랜치여서 충돌이 발생할 수 있었다.다행이 이번에는 각자 개인 프로젝트를 한 브랜치에 옮기는 작업이었기에 충돌이 없었지만, 그게 아니었으면 충돌이 일어나는 상황이었다. 위 사진처럼 과거의 dev 브랜치에 merge를 해버렸다.이런일이 발생하지 않았으려면, 최신 dev 브랜치를 pull 한 후에 merge를 했어야 했다.. 이를 해결하기 위해서는 rebase를 했어야 했다고 한다. 위 사진처럼 git kraken으로 팀원분의 도움을 받아 rebase를 하였다. rebase는 뭘까?rebase에 대해 잘 몰라서 질문을 하니rebase는 기존 브랜치에서 작업해놓은 co.. [iOS/Swift] 야구게임 프로젝트 코드 리뷰/수정 (EOF, Dictionary, API Design Guidelines) 코드 리뷰3월 12일에 팀원 전체 코드리뷰를 진행하였다. 팀원들과 서로 화면공유를 하여 코드리뷰를 하였고, 이후 다시 정리하여 서로 comment를 남겼다. 이렇게 코드리뷰를 제대로 해본적은 처음이었다. 코드리뷰를 하면서 새로 배운 것들이 많아 좋은 경험이었다. 코드 수정이제 코드를 수정해야했다.함수명 불명확 기존에 첫 메인메뉴를 시작하는 함수 이름이 welcome으로 되어있었다.이부분이 애매하다는 피드백을 받아 runMainMenu()로 변경하였다.또한 readLine() 부분에 guard를 쓰지 않고 그냥 값만 입력받도록 되어있었다.하지만, EOF(control+D)를 입력하였을 때 무한루프에 걸려버리는 오류가 있다고 피드백을 해주셨다. EOF 오류 앞서 말했던 EOF 오류가 여기서도 발생하였다.. [iOS/Swift] 스파르타 야구게임 프로젝트 오류 해결 (troubleshooting) 게임 기록 중복 추가처음 개발 시 게임 기록 로직을 records에 n번째 게임, 시도횟수를 넣어두고, 나중에 recordList 배열에 for문을 써서 전부다 추가해버리는 로직으로 구현을 해버려서, 일단 급하게 기존 record가 들어오지 못하도록 if문과 contains로 중복 추가를 방지하였음. 추후에 로직 전체를 다시 설정해야 할 필요성이 보임. userAnswer 개수 체크userAnswer가 3개를 입력받아야 하는데 그렇지 않을 시 예외 처리를 하지 않았음.if 문과 count를 활용하여 해결하려 하였음. 위 코드로 해결하려 하였다.if userAnswer.count != 3 { print("세 번호를 입력해주세요") continue}하지만 애초에 구조를 잘 못 짰었다.로직 순서.. 이전 1 2 3 4 5 6 7 다음 목록 더보기