문제 링크 문제 풀이 아이디어 부분합 N이 최대 500,000입니다. O(N)의 시간복잡도를 가진 알고리즘을 사용해야 합니다. 연속된 부분 수열의 합 문제는 부분합을 사용할 경우 O(N)의 시간복잡도로 문제를 해결할 수 있습니다. 펄스 수열 다만 이 문제는 단
문제 링크 문제 풀이 아이디어 2개의 bfs 문제를 읽어보면 전형적인 최단거리 문제 따라서 전형적인 bfs 문제입니다. 시작점에서 레버까지의 최단거리, 레버에서 출구까지의 최단거리를 구하면 됩니다. 2개의 bfs를 사용해서 풀면 되는 것이죠. 같은 공간을 여러번
문제 링크 문제 풀이 아이디어 시간복잡도 weights의 길이가 최대 100,000입니다. 따라서 weights의 모든 사람을 짝지어서 (nC2) 짝꿍이 되는지 확인하는 방식으로 해서는 안되고 O(N) 안에 해결을 봐야 합니다. Dictionary 활용 문제에
문제 상황 사이드 바를 통해서 세팅을 변경하고 그 세팅에 따라서 다른 Cell을 보여주는 View입니다. 의도한 동작은 setting을 변경하면 모든 Cell이 한꺼번에 변경이 되는 것입니다. 하지만 아래와 같이 LazyVStack 안에 if문을 작성하니 문제가 있었
TCA를 사용하다가 실수한 케이스를 포스팅 해보겠습니다. IdentifiedArray Filtering TCA 예제에 보면 IdentifiedArray의 원소 중에 특정 조건을 만족하는 원소들만을 View에 보여주기 위해서 고차함수 filter와 computed p
문제 링크 문제 풀이 아이디어 풍선 터뜨리기 프로세스 다른 풍선부터 싹 터뜨리자 조건에 의하면 인접한 풍선만 짝을 지어 터뜨릴 수 있습니다. 따라서 최후의 풍선이 되기 위해서는 다른 풍선들이 다 터지고 마지막으로 남은 풍선과 최후의 풍선이 나란히 있어야 합니다.
본 포스팅은 리팩터링 2판을 읽고 작성했습니다. 지난번 포스팅에 기본형을 객체로 변경하는 리팩터링을 했었는데요. 해당 코드에 문제점이 하나 있습니다. before 아래 코드의 문제점은 학생의 classRoom과 studentCode라는 정보에 접근하기 위해서는 St
본 포스팅은 리팩터링 2판을 읽고 작성했습니다. 개발 초기에는 하나의 구조체에 여러가지 기본 자료형 (Int, String)등을 통해서 데이터를 표현할 때가 많습니다. 하지만 앱이 복잡해짐에 따라 구조체도 복잡해지고 때로는 기본자료형들을 묶어서 하나의 구조로 처리하는
문제 풀이 아이디어 구현 문제를 읽어보면 뭔가 복잡한 과정에 대해 설명하고 있습니다. 하지만 부분부분 쪼개서 읽어보면 단지 주어진 입력을 주어진 문제 그대로 코드로 구현하면 되는 문제입니다. 복잡한 풀이 방법, 알고리즘에 대해 고민할 필요가 1도 없습니다. 딱 원
문제 풀이 아이디어 1번 상자 그룹, 2번 상자 그룹? 문제의 설명을 읽어보면 혼자 노는 방법이 자세히 적혀있습니다. 게임은 총 2번의 시도로 나뉘어지고 각각의 시도를 통해서 얻은 상자의 갯수를 곱해서 구하는 것으로 되어있습니다. 이 방법에 따라서 랜덤으로 상자를
문제 풀이 아이디어 구현 문제를 풀기 위해서 특별한 알고리즘은 필요가 없는 구현 문제입니다. Dictionary 활용 문제 전반에 걸쳐서 사람을 구분하기 위해서 index와 이름 (String)을 혼용해서 사용하고 있습니다. 그리고 마지막에 답을 출력할 때는
SwiftUI로 View를 개발하다가 보면 조건에 따라 다른 View를 출력해야 하는 경우가 있습니다. 아래 예시를 보도록 하겠습니다. Body 안에 if문 아래 View는 원하는 도형의 이름을 입력 받아서 해당 도형을 보여주는 간단한 View입니다. 아래처럼 bo
개발을 할 때 어디선가 코드를 가져와서 복붙을 하는 것은 자주하는 일입니다만, 가끔 그걸 넘어서서 .swift 파일을 통째로 프로젝트에 추가해야 할 경우도 생깁니다. 오늘은 외부 코드 파일 (사실 코드 뿐만 아니라 모든 파일에 해당합니다.)을 추가하는 방법에 대해서 알
SwiftUI로 개발할 때 preview는 상당히 유용합니다. 우리가 구현한 뷰가 실시간으로 업데이트되는 화면을 볼 수 있기 때문인데요. 보통 처음에 세팅이 되어있는 preview는 현재 선택한 시뮬레이터의 기기 1종류에서만 볼 수 있습니다. 하지만 아이폰은 기종에
Asset에 이미지를 추가하면? Xcode에서 이미지를 추가하면 처음 마주하는 모습은 아래와 같습니다. 우리가 추가한 이미지는 1x라는 칸에 들어가 있고 추가적으로 2개의 이미지를 2x, 3x에 넣어주어야 할 것 같은 느낌입니다. 1x, 2x, 3x? 이 세가지는
이번 시간에는 버튼에 배경에 그림자를 가진 둥근 사각형을 깔아서 버튼에 그림자 효과를 적용해보겠습니다. ZStack과 .background를 사용하는 두 가지 방법이 있는데요. 어느 경우에 어떤 방법을 사용해야 할지 알아보겠습니다. ZStack을 사용하면 독립적! ZStack을 사용하면 배경에 들어갈 사각형과 버튼은 독립적인 존재입니다. 따라서 사각형...
문제 풀이 아이디어 공약수를 통해서 푸는 문제입니다. 먼저 배열 A와 배열 B의 모든 수를 나눌 수 있는 가장 큰 수, 즉 최대 공약수를 구해야 합니다. 그리고 나서 해당 최대공약수가 다른 배열의 수를 모두 나눌 수 있는지 확인해야 합니다. 서로의 배열을 나누는
문제 풀이 아이디어 (그리디) 체크인과 체크아웃을 나눈다. 현재의 입력은 체크인과 체크아웃이 하나의 배열 안에 묶어서 제공합니다. 필요한 방의 갯수를 구하기 위해서는 해당 입력을 체크인과 체크아웃으로 각각 나눌 필요가 있습니다. 그리고 해당 입력을 “시간 순”으로
문제 풀이 아이디어 점프와 순간이동과 유사한 문제입니다. 수를 바꾸는 몇가지 선택지를 가지고 원하는 숫자까지 도달하는 문제입니다. 완전 탐색? 이 문제의 N은 최대 100,000,000입니다. 버튼의 종류는 최대 16종류가 되겠습니다. 따라서 완전 탐색을 하게
문제 풀이 아이디어 콘의 목표 콘의 목표는 가장 늦게 버스를 타는 것입니다. 즉 콘의 목표를 만족하기 위해서는 아래의 조건이 만족 되어야 합니다. 무조건 막차를 타야한다. (가장 늦게 오는 버스이므로) 여러 명이 막차를 탄다만 가장 늦게 타야한다. (최대한 늦게