728x90 분류 전체보기304 [Swift] BOJ 11967 불켜기 풀이 [Swift] BOJ 11967 불켜기 풀이 1. 문제 분석 일단 이 문제는 문제를 잘 읽어야 한다는 것을 "맞았습니다!"를 받고 알게 되는 문제이다. 대충 시간복잡도랑 불 켤 수 있는 방을 찾으면 되겠다해서 BFS를 기계적으로 구현하면 바로 틀리게 된다.BFS 투어를 하고 있던 나는 순간이동 같은 개념인줄 알고 1, 1에서 1, 3으로 가고... 뭐 이런식으로 생각하고 처음 코드를 짰다가 빨간 "틀렸습니다"를 맛보게 되었다. 그런데 그 후에도, 스위치를 켠 방은 무조건 건너갈 수 있을 것이다라고 생각하고 코드를 짜버려서 또 틀렸습니다를 마주했다. 일단은 BFS로 현재 갈 수 있는 곳을 탐색해야 해서 이동하는 것은 맞다. 그런데 중요한 것은 암소가 "불이 켜진 방"으로만 갈 수 있다는 사실이다. 1, .. 2024. 9. 20. [Swift] BOJ 2504 괄호의 값 풀이 정리 [Swift] BOJ 2504 괄호의 값 풀이 정리 1. 문제 분석 1) 구해야할 값 분석 최종적으로 구해야 할 것은 괄호열의 값의 총합이다.괄호가 성립된다고 해서 단순하게 값이 총합에 + 되는 것이 아니라, 어떤 괄호쌍에 쌓여 있게 되면, 2배 또는 3배로 곱해주어야 한다. 어떤 것이 중첩된 괄호인지 판단하고, 그에 맞게 괄호쌍의 점수를 판단해주는지가 문제이다. 볼드체 쳐진 부분을 어떻게 처리하는 지가 관건인 문제인 것이다. 2) 도구 선택 괄호는 쌍으로 이루어지기 때문에 스택 구조가 적합할 것이다. 괄호를 여는 부분을 스택에 넣고, 닫히는 괄호는 스택에서 제거해서 올바른 괄호쌍을 찾는다. 닫는 괄호가 나올 때, 열린 괄호와 짝이 맞는지를 확인해야 한다. 이때, 짝이 안맞으면 잘못된 입력이기 때문에.. 2024. 9. 14. [iOS] SwiftUI 약관 동의 화면, 전체 동의 Checkbox 만들기 [iOS] SwiftUI 약관 동의 화면, 전체 동의 Checkbox 만들기 회원가입이 있는 서비스나 뭔가 전체 선택을 하게 하는 체크박스가 있는 경우, 위와 같은 동작을 생각하고 코드를 구현해야 한다. 처음엔 쉬울 줄 알았는데, 만들다 보니 난도가 있는 것 같아 정리하기 위해 포스팅을 한다. /// TODO:/// - 모두 선택되어 있지 않을 때, 전체 동의를 누를 때 모든 체크박스가 on 상태가 된다/// - 모두 선택되어 있을 때, 전체 동의를 누르면 모든 체크박스가 off 상태가 된다./// - 모두 선택되어 있을 때, 전체 동의하기 체크박스는 on 상태이다./// - 모두 선택되어 있을 때, 전체 동의를 제외한 체크박스 하나를 누르면 전체 동의하기 체크박스는 해제된다. 네 가지 요건을 만족시키.. 2024. 8. 9. [iOS] SwiftUI Navigation BackButton 일괄 변경하기 [iOS] SwiftUI Navigation BackButton 일괄 변경하기 네비게이션 백버튼을 일괄적으로 변경해야 했다. 일반적으로 블로그에는 백버튼을 이전 뷰에서 navigationItem을 설정해주는 방식으로 적용을 해주지만, 뷰가 수십개라면...? 물론 복사하기 붙여넣기 열심히 하면 되지만, 적용이 안되는 뷰가 있을 수도 있으며, 그거 일일이 다 찾아서하는 것은 너어어어무 귀찮은 일이라는 생각이 들었다. 그래서 어딘가에서 백버튼을 일괄적으로 설정해줄 수 있지 않을까?라는 한낱 희망을 붙잡고 일괄 변경하는 코드를 만들어 보았다. 1. AppDelegate 준비 SwiftUI의 경우 AppDelegate가 없다. 그래서 만들어주어야 한다. 뭐 다른 API를 쓴다고 하면 분명히 이전에 만들어둔 것.. 2024. 8. 8. [iOS] 앱 버전 체크 기능 만들기(강제종료) [iOS] 앱 버전 체크 기능 만들기(강제종료) 개발자가 앱을 업데이트했는데, 기존과는 완전히 다른 데이터 구조로 변경하였거나, 사람들이 써야만 하는 기능을 추가한 경우에는 업데이트를 강제할 필요가 있다. 출근 전 상태를 점검하는 것처럼 앱도 앱스토어의 앱버전과 비교해서 중요 업데이트가 올라와 있으면 앱을 실행시키지 않고 앱을 강제로 업데이트하게 할 수 있는 방법을 구현해 보았다. 아래에서는 소프트웨어 버전 관리 "major.minor.patch" 중 minor 버전이 올라갔을 때, 앱 스토어 버전과 비교하여 업데이트 경고창을 띄우는 방법을 알아보겠다. 0. 사전 준비사항 : 앱 스토어에 등록이 되어 있어야 한다.: 물론 앱은 존재해야 한다. -> 앱 스토어의 앱 버전과 현재 빌드하려는 앱의 버전을 .. 2024. 8. 7. [iOS] Firebase만 가지고 리더보드 만들어보기 [iOS] Firebase만 가지고 리더보드 만들어보기 사용자의 점수를 가지고 랭킹을 구성해야 되는 메인화면을 만들어야 했다. 유저들이 쌓는 출석 누적점수에 따라 순위가 변동되는 뷰를 만들어야 했는데, 어떻게 만들지 고민이었다. 순위를 보여줄 수는 있는데 그러면 동점자를 어떻게 해야 할 것이며, 매번 users를 전부 쿼리로 줄을 세워서 가지고 올 수도 있는데 이러면 근처의 랭킹은 어떻게 가져올 것이며, 누군가 조회를 하는 도중에 점수를 올렸다면 어떻게 대응할 것이며... 이런 여러 가지 것들의 문제상황을 생각했었다. 이 부분들을 해결하기 위해 리더보드 구현하는 방법을 서칭 하다가 Redis로 리더보드를 구현하는 방법을 보았는데, Firebase로도 비슷하게 따라 할 수 있을 것 같아서 진행시켜 보았다.. 2024. 7. 29. 이전 1 2 3 4 ··· 51 다음 728x90