Introduce SW academy에서 실습한 미니 프로젝트를 소개하고 복습하는 과정을 포스팅하려고 한다 실습 프로젝트를 수행하면서 Swift 문법에 대해서도 자세히 알게 되었고 앱 개발 기술도 습득할 수 있었다 다시 앱을 혼자서 구현해보면서 배운 점들을 상기시키고 추가할 점들이나 문제점 개선을 해보며 기록해려고 한다 Caffeine Holic 처음으로 진행한 미니 프로젝트의 주제는 'Caffeine Holic' 이었다 사용자에게 상태 변화를 입력받고, 이 상태 변화를 기록하며 화면에 재밌게 나타내는 간단한 어플이다 상단에는 Top Button이, 가운데에는 list와 Image View, 하단에는 상태 변화를 입력받는 Button들이 배치되어 있다 function 하단 버튼을 통해 스트..
Time Complexity 알고리즘 문제를 풀 경우나 앱을 개발할 때에도 시간 복잡도 고려는 매우 중요하다 코드의 위치만 바꾸어 주더라도 코드의 시간 복잡도를 대폭 줄일 수도 있다 또한 같은 결과를 출력하는 함수로 대체해주는 것도 시간복잡도를 줄이는 좋은 방법이다 한번 정리해놓으면 잊지 않을 것 같아 포스팅해보기로 하였다 Array method time complexity append(_ newElement: Element) O(1) append(contensOf:) O(M) (M은 삽입하려는 Elements의 개수) insert(_ newElement: Element) O(N) (가장 마지막에 삽입할 경우 O(1)) count O(1) randomElement() O(1) reversed O(N) l..
문제 준식이는 수열 A[1], A[2], ..., A[N] (N ≥ 3) 을 가지고 있다. 이 수열에서 단 한 개의 수를 제외하고 나머지 수는 모두 같다. 그 수는 수열에서 몇 번째에 위치할까? 입력 첫째 줄에 테스트 케이스의 개수 T 가 주어진다. 각 테스트 케이스의 첫째 줄에 수열의 길이 N (3 ≤ N ≤ 100)이 주어진다. 둘째 줄에 A[1], A[2], ..., A[N]이 주어진다. 수열의 i번째 원소는 정수 A[i] (1 ≤ A[i] ≤ 100)이다. 주어지는 수열에서 단 한 개의 수를 제외하고 나머지 수는 모두 같다. 출력 각 테스트 케이스마다 문제의 정답이 수열에서 몇 번째에 위치하는지 출력한다. // 입력 1 5 1 4 4 4 4 // 출력 : 1 풀이 이번 문제는 배열을 순회하는 간단..
문제 현진이는 길거리를 걸을 때 에어팟으로 노래를 듣는다. 현진이는 자신만의 플레이 리스트가 있기 때문에 집을 나설 때 마다 플레이 리스트의 노래를 순서대로 이어서 듣고, 모든 플레이 리스트를 들었다면 처음부터 다시 반복 재생해서 듣는다. 현진이의 플레이 리스트는 N 개의 곡으로 이루어져 있다. 각각의 곡의 길이(초)를 B[1], B[2], … , B[N] 이라고 하자. 현진이는 집을 나선지 1 초가 지난 시점부터 B[1] 초까지 1 번째 노래를 듣고, B[1] + 1 초부터 B[1] + B[2] 초까지 2 번째 노래를 듣는 식으로 나머지 모든 노래를 듣는다. 예를 들어 현진이의 플레이 리스트에 있는 3 개의 곡의 길이가 각각 3, 1, 2 라고 하자. 현진이가 집을 나선지 1 초부터 3 초까지는 첫 번..
tuple let n = readLine()!.split(separator : " ").map{Int(String($0))!} let (N,M) = (n[0],n[1]) swift로 알고리즘 풀이를 하다보면 위에서와 같이 ( )로 변수를 감싼 형태를 자주 사용하게 되는데 정확히 정의를 모르고 사용하고 있어서 인터넷에 찾아보았다 tuple? 매우 간단한 struct이다 여러 가지 타입을 한꺼번에 묶어서 사용할 수 있다 (또 다른 튜플이나, 함수까지도 가능)var tuple = (1, "hello",true) var anotherTuple = (3, tuple, sayhi()) 튜플의 있는 값에 접근하려면 ? 튜플이름.인덱스 혹은 이름 지정해주기var tuple = (1, "hello",true) print..
문제 준식이의 모엄 은 준식이가 2차원 N × M 격자 세상에서 떠나는 모험을 주제로 한 게임이다. 당신은 이 게임의 개발자가 되었다. 준식이는 2차원 N × M 격자 세상의 어딘가에 위치해 있다. 플레이어는 L , R , U , D 입력을 통해 준식이를 왼쪽, 오른쪽, 위, 아래 칸으로 이동시킬 수 있다. 하지만 만약 이동하려는 칸이 격자 바깥이거나, 벽인 경우 준식이는 플레이어의 입력을 무시하고 제자리에서 이동하지 않는다. 게임을 좀 더 흥미진진하게 만들기 위해서 격자 세상에 가시 함정(^)이 추가되었다. 준식이는 가시 함정이 위치한 칸으로 이동할 수 있지만 함정을 밟아서 데미지를 1만큼 입게 된다. 함정은 밟더라도 사라지지 않는다. 만약 함정 위에서 입력받은 방향으로 움직일 수 없어 제자리에 멈추는..
문제 준식이의 모엄 은 준식이가 2차원 N × M 격자 세상에서 떠나는 모험을 주제로 한 게임이다. 당신은 이 게임의 개발자가 되었다. 준식이는 2차원 N × M 격자 세상의 어딘가에 위치해 있다. 플레이어는 L , R , U , D 입력을 통해 준식이를 왼쪽, 오른쪽, 위, 아래 칸으로 이동시킬 수 있다. 하지만 만약 이동하려는 칸이 격자 바깥이거나, 벽인 경우 준식이는 플레이어의 입력을 무시하고 제자리에서 이동하지 않는다. 2차원 N × M 격자 세상과 플레이어의 입력이 주어질 때, 플레이어의 모든 입력이 끝난 후의 준식이의 위치는 어디일까? 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에 2차원 격자 세상의 크기 N, M (1 ≤ N, M ≤ 8) 이 주어진다. ..
머신러닝과 딥러닝에 대해 공부해보려고 합니다 모두를 위한 머신러닝/딥러닝 강의를 수강하고 배운 것들을 정리해보겠습니다 [참고] (https://hunkim.github.io/ml/) Cost Function 최소화 Hypothesis and Cost H(x) = Wx + b cost를 최소화하는 W와 b의 값을 우리가 가지고 있는 데이터를 통해 구해보자 ! What cost(W) looks like? cost함수 x y 1 1 2 2 3 3 W = 1일때, cost(W)=? {(1 x 1 - 1)^2 + (1 x 2 - 2)^2 + (1 x 3 - 3)^2}/3 = 0 + 0 + 0 = 0 W = 0일때 cost(W) = 4.67 W = 2일때 cost(W) = 4.67 - 목적 : Cost = 0인 지..