본문 바로가기

전체 글

(207)
[자료구조] 연결 리스트 (단방향) 배열 VS 연결 리스트 리스트에 대해 본격적으로 들어가기 전에 배열과의 차이점에 대해서 알아보자. 연결 리스트 역시 이전에 포스팅 했던 배열과 마찬가지로 데이터를 표현하는 자료구조 중 하나이다. *배열과 연결 리스트는 서로의 장단점을 보완하고 있다. 배열 배열은 인덱스를 이용해서 하나의 메모리 공간 안에 데이터들이 나란히 저장되어 있다. 그래서 인덱스를 통해 데이터에 접근할 수 있고 인덱스만 알고 있다면 값에 대한 접근이 매우 빠르다. 그러나, 처음이나 마지막 인덱스가 아닌 요소를 추가/삭제한다면 element(index+value)를 재배치하는 작업 때문에 오버 헤드가 발생할 수 있다는 단점이 있다. 연결 리스트 연결 리스트는 배열의 단점을 보완한 것이다. 따라서 배열과 같이 순차적으로 데이터를 보관하..
[자료구조] 배열 배열이란? 선형 자료 구조 동일한 데이터 타입을 연속적으로 저장한 자료 구조 그러므로 다른 데이터 타입을 담을 수 없다. 데이터를 순서대로 나열한다는 것과 메모리에 연속으로 저장한다는 점이 배열의 포인트이다. 배열의 구성 index : 배열의 순서 (0부터 시작) value : 배열의 값 element : index와 value를 통칭하는 요소 배열의 시간 복잡도 ✅ 특정 인덱스를 알고 있는 경우 O(1)의 시간 복잡도를 가진다. 배열의 원소 추가/삭제를 무조건 O(n)의 복잡도를 가진다고 생각할 수 있지만, 인덱스를 이용해서 접근하는 경우 O(1)의 복잡도를 가진다. 특정 Index에 있는 원소를 참조하는 연산 특정 Index의 원소의 값을 변경하는 연산 배열의 가장 끝에 원소를 추가하는 연산 배열의 ..
[백준] 2775번: 부녀회장이 될테야 문제 평소 반상회에 참석하는 것을 좋아하는 주희는 이번 기회에 부녀회장이 되고 싶어 각 층의 사람들을 불러 모아 반상회를 주최하려고 한다. 이 아파트에 거주를 하려면 조건이 있는데, “a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다” 는 계약 조항을 꼭 지키고 들어와야 한다. 아파트에 비어있는 집은 없고 모든 거주민들이 이 계약 조건을 지키고 왔다고 가정했을 때, 주어지는 양의 정수 k와 n에 대해 k층에 n호에는 몇 명이 살고 있는지 출력하라. 단, 아파트에는 0층부터 있고 각층에는 1호부터 있으며, 0층의 i호에는 i명이 산다. 입력 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 ..
[백준] 함수 [함수] 단계에서는 문제가 3개밖에 없어서 기록용으로 정리 .. 4673번 입력) 입력은 없다. 출력) 10,000보다 작거나 같은 셀프 넘버를 한 줄에 하나씩 증가하는 순서로 출력한다. 소깡이 풀이 import Foundation func calculateDNumber(value: Int) -> Int { let dNumber = value + (value / 10000) + (value % 10000 / 1000) + (value % 1000 / 100) + (value % 100 / 10) + (value % 10) return dNumber } var arr: [Int] = [] var total: [Int] = [] for i in 0...10000 { total.append(i) arr.app..
[백준] 1712번: 손익분기점 문제 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 인건비 등 총 B만원의 가변 비용이 든다고 한다. 예를 들어 A=1,000, B=70이라고 하자. 이 경우 노트북을 한 대 생산하는 데는 총 1,070만원이 들며, 열 대 생산하는 데는 총 1,700만원이 든다. 노트북 가격이 C만원으로 책정되었다고 한다. 일반적으로 생산 대수를 늘려 가다 보면 어느 순간 총 수입(판매비용)이 총 비용(=고정비용+가변비용)보다 많아지게 된다. 최초로 총 수입이 총 비용보다 많아져 이익이 발생하는 지점을 손익분기점(BREAK-EVEN POINT)이라고 한다. A, B, C가 주어졌..
[니카내카] 디바이스의 네트워크 연결 상태를 확인하려면? 카카오톡과 같은 앱의 경우 네트워크가 연결되어 있어야 서비스가 제대로 작동할 수 있다. 니카내카를 개발하다가 네트워크 상태에 따라서 서버 데이터가 제대로 오지 않았을 때 유저가 인터랙션을 하게 되면 앱이 강제종료가 되는 이슈가 나타난다. 그래서 앱에 진입했을 때 현재 디바이스의 네트워크 연결 상태를 받아, 연결이 되지 않았다면 팝업창을 띄우고 그렇지 않은 경우에는 메인 화면 (지도)로 이동할 수 있도록 분기처리했다. 🤔 고민인 부분 앱을 최초 실행했을 때, ✅ 스플래쉬에서 분기처리하는 것은 가능하지만 ❌ background -> foreground로 이동했을 때에도 네트워크 상태를 확인하고 싶은데 .. 아직 못해서 .. 고민중 .. Network Manager File 네트워크 상태를 하나의 화면에서 확..
[운영체제] 캐시 캐시란, 메인메모리에 저장된 내용의 일부를 임시로 저장해두는 기억장치를 말한다. 왜 메인메모리가 있는데 캐시라는 저장장치를 두는 것이며 메인메모리와의 차이는 무엇일까? 메인메모리 메인메모리 = 주기억장치= RAM 개념 프로그램이 실행되려면 해당 프로그램이 복사되어서 메모리에 적재(메모리에 적재된 프로그램을 프로세스라고 한다.)되어야 한다. CPU는 연산을 수행한 후에 메인 메모리에 데이터를 저장하거나 필요한 데이터를 요구한다. RAM은 Random Access Memory의 약자로, 어느 위치에 저장된 데이터든지 접근하는데 동일한 시간이 걸리는 메모리를 말한다. (RAM은 DRAM과 SRAM이 있는데 주기억장치는 주로 DRAM을 의미) 특징 컴퓨터의 CPU가 현재 처리 중인 데이터나 명령만을 일시적으로 ..
현위치 위도,경도로 지역명 갖고 오기 사용자의 현재 위치(위도/경도)를 바탕으로 지역명을 갖고 오는 기능을 구현해보자. 어떻게? CLGeocoder를 통해서! CLGeocoder 사용자가 현재 앱을 실행할 때의 위도, 경도값을 가지고 네트워크 연결을 하여, placemark를 뽑아주는 기능이다. 즉 coordinate 정보에 맞게 place name으로 변환시켜주는 코더라고 보면 된다. 애플문서를 확인해보면, Geocoding을 사용하기 위한 규칙이 있다. ✅ 하나의 사용자 작업에서 최대 하나의 지오코딩 요청을 보낸다. ✅ 사용자가 동일한 위치의 지오코딩과 관련된 여러 작업을 수행하는 경우 각 작업에 대한 개별 요청을 시작하는 대신 초기 지오코딩 요청의 결과를 재사용한다. ✅ 일반적인 상황에서 분당 지오코딩 요청을 두번이상 보내면 안된다고 ..