컴퓨터78 Select Sort - 선택 정렬과 코드 선택정렬은 거품정렬과 비슷하다. 둘다 반복문을 완전히 2번 돈다는 점에서 최선/평균/최악의 시간복잡도가 n^2로 같다. 다른 점은 선택정렬이 거품정렬보다는 swap 횟수(메모리 이동)이 적을 수 있다는 것이다. 예를 들어 2 3 5 1 과 같은 배열을 오름차순으로 정렬한다고 하면 선택 정렬로 정렬하는 과정은 다음과 같다. 선택 정렬은 각 반복마다 가장 끝에 최대값을 찾아 넣는다. 그래서 N길이의 배열의 경우 첫 반복에는 arr[N-1] = MAX(arr[0] ~ arr[N-1]) 이 들어가고 다음 반복에는 arr[N-2] = Max(arr[0] ~ arr[N-2]) 가 들어가게 된다. 의사코드를 작성해보면 아래 같은 느낌이다. for ( i = 0 ~ N-1 ){ for( j = 1 ~ N-1-i ){ .. 2022. 7. 5. Bubble Sort - 거품 정렬과 코드 지금까지 내가 알고있기로는 버블 소트는 앞으로 다룰 정렬중에서 가장 정직하고(?) 가장 비효율적인 정렬이다. 그래서 이 정렬이 실제로 쓰이는지 궁금하기도하다. 오름차순의 경우, 거품 정렬은 뒤에 있는 데이터와 값을 비교하면서 앞의 데이터가 뒤의 데이터보다 크면 위치를 교환한다. 처음에는 주어진 배열의 처음에서 끝(N)까지 탐색, 그 뒤로는 처음부터 N-1까지 탐색, 그 뒤로는 N-2까지 탐색하며 탐색 범위를 줄여나간다. 그래서 처음 탐색을 완료하면 N번째에는 제일 큰 수가 오고 다음으로 탐색을 완료하면 N-1번째에는 그 다음으로 큰 수가 온다. 예를 들어 1, 5, 3, 2, 4 라는 배열이 있을 때 이를 거품정렬을 한다면 다음과 같을 것이다. 이 과정을 의사코드로 나타내면 for(int i = 0; i.. 2022. 7. 5. [4] 컴퓨터 내부 구조 (1) 지난 3장에서는 비트를 사용하는 컴퓨터가 어떻게 비트를 기억하는지에 대해 다뤘다. 이를 통해 컴퓨터의 저장 장치들인 레지스터, 램, 롬, 디스크 등에 대해 간단히 다뤘었다. 현대적 컴퓨터는 대략적으로 기억장치, 입출력장치, 중앙처리장치와 같이 세 가지 부분으로 나눌 수 있는데 이번 장에서는 이 세 부분이 어떻게 연관 되어 있는 지에 대해서 다룬다. 이번 글에서는 메모리와 입출력에서 다루고 다음글에서는 중앙처리장치에 대해서 다루려고한다. 1. 메모리 메모리는 메모리 주소가 있고 각 메모리들과 연결되어있는 메모리 길이 있다. 버스나 실제 부분을 생각하지 않고 추상화해서 생각해보면, 메모리 길에 프로세서에 따른 4차선 또는 8차선 등의 도로가 나 있다고 보면, (SRAM같은 경우는 고속도로, 디스크의 경우 비.. 2022. 5. 11. [2] 전자 회로의 조합 논리 컴퓨터는 비트(bit)를 사용한다고 지난 1장에서 배웠다. 여담이지만 지금 이진상회(binary상회..)라는 정말 좋은 카페에 와서 이 글을 쓰고있다. 2장에서는 컴퓨터가 그래서 이 비트를 어떻게, 어떤 논리로 다루는지에 대해 배운다. 지난시간에 NOT, OR, AND, XOR과 같은 불리언 대수에 대해 잠깐 이야기를 했었는데 이번 장에서는 불리언 대수 -> 조합논리에 대해 다룰 것 같다. 1. 아날로그와 디지털 간단하게 아날로그는 연속적인 것, 디지털은 이산적인 것이다. 아날로그로 표현하는 것이 모든 실수를 표현할 수 있기 때문에 좋아보이지만 반면 아날로그는 정확한 표현을 하기에 어렵다. 자에서 정확하게 1.01을 찾는 것이 어려운 것 처럼. 물론 자가 매우 커진다면 1.01을 찾는 것은 쉬울 수 있다.. 2022. 5. 1. [1] 컴퓨터 내부의 언어 체계 컴퓨터는 비트(bit)를 사용한다. 이는 2진법을 사용한다는 바이너리(binary)와 숫자를 의미하는 디지트(digit)가 합쳐진 말이라고한다. 비트를 이용한 표현에는 논리 연산, 정수 표현, 실수 표현.. 부터 색을 표현하는 방법까지 다양하다. 어떻게 0과 1로 이 모든 것을 표현할까? 1. 논리 연산 NOT, OR, AND, XOR과 같은 불리언 대수를 이용해서 "비가온다면 코트를 입는다", "학교에 가는 날이 아니라면 공원을 간다"와 같은 문장들을 다룰 수 있다. 2. 정수의 표현 비트를 이용한 2진수로 값을 표현한다. 비트의 개수가 32개이면 0~4294967295를 표현할 수 있고 비트의 개수가 64개이면 0~18446744073709551615의 범위를 표현할 수 있다. 2진수에서는 가장 오른.. 2022. 4. 5. 한 권으로 읽는 컴퓨터 구조와 프로그래밍 독서 시작 책을 읽기 전 생각 이 책에는 더 나은 소프트웨어 개발을 위한 하드웨어, 자료구조, 필수 알고리즘 등에 관한 내용이 담겨있다고 한다. 임베디드와 관련된 현직으로 들어가기 전에 전반적인 컴퓨터 구조에 관한 지식을 환기하고 싶었고, 컴퓨터구조와 관련된 내용뿐 아니라 프로그래밍과 관련된 전반적인 내용을 다루고 있는 것으로 보여 이 책을 선택하게 되었다. 프로그래밍을 제대로 잘 해야하는 이유 - 앞으로는 컴퓨터가 들어있지 않은 물건을 찾기가 어려운 시대가 올 것이다. - 컴퓨터 프로그래밍은 다방면의 지식을 갖추지 않아도 특정 분야의 전문가가 될 수 있다 -> 보안 취약점 보고서나 제품 리콜등과 같이 소프트웨어 품질에 대한 문제의 원인 프로그래밍 교육 열풍 이 책에서는 이렇게 말한다. "누구나 코딩을 배우는 것은.. 2022. 4. 5. M1칩 MacOS에 Flutter 설치, Android Studio 설정 0. Android Studio 다운로드 https://developer.android.com/studio?gclid=Cj0KCQiA3fiPBhCCARIsAFQ8QzWuVxJbLgPC6z07sZcZQ10Eu3WOXOA63vD3HcI8upufUEgMnPvuY-oaAnMCEALw_wcB&gclsrc=aw.ds Download Android Studio and SDK tools | Android Developers The official IDE for Android app developers. developer.android.com 1. Flutter 다운로드 https://docs.flutter.dev/get-started/install/macos macOS install How to install on m.. 2022. 2. 6. iOS 빌드까지의 여정 1. Apple Developer 등록하기 Flutter로 앱 개발을 마쳤는데, 플레이스토어/앱스토어에 올리기는 뭐해서 그냥 친구들한테 테스트 앱 형태로 보내주고싶었다. 그런데 주변에 안드로이드 유저보다 iOS유저가 많은건 기분탓일까? 하는 수 없이 iOS Build를 하려고 했는데... 안된다고 한다. 보니까 Apple은 테스트앱 빌드 ~ 앱스토어 업로드까지 전부 Apple developer에 등록해야 가능했다. 1년에 129,000원. 개객기들.. 걍 올해 미친척하고 플러터 개발에 토이프로젝트를 부어보자 하는 마음으로 13만원^^.. 질러보자. 아래 사이트에 들어간다. https://developer.apple.com/kr/ Apple Developer Apple 플랫폼에서 개발할 절호의 기회입니다 developer.apple.com 들어가면.. 2022. 1. 27. Flutter_downloader 예제 오류 해결 [nullpointerexception, File.getPath, provider, http...등 ] Flutter에서 파일 다운로드를 구현하려고 flutter_downloader 패키지를 이용하려고 했다. 예제 코드를 돌려보는데 아래처럼 죄다 fail이 떴다. (맨위에는 나중에 해결한 것) java.io.File com.parse.ParsePlugins.getParseDir() 부터해서 Cleartext HTTP traffic to ~~ not permitted, java.lang.String java.io.File.getPath(), java.lang.illegalargumentexception: couldn't find meta-data for provider with authority com.example.filedownloader.flutter_downloader.provider 와 같이 각종 .. 2022. 1. 12. [Flutter] 플러터 빌드 오류 (해결, 플러터 업데이트/SDK Manager/Xcode 업데이트) warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.4.99. (in target 'Runner' from project 'Runner') warning: Capabilities for Signing & Capabilities may not function correctly because its entitlements use a placeholder team ID. To resolve this, select a development team in the Runner editor. .. 2022. 1. 3. [백준 11726번] 2×n 타일링 풀이 이 문제는 점화식만 생각해낸다면 상당히 빠르게 풀 수 있는 문제이다. n=1일 때와 n=2일때만 생각해보면 이런식으로 1개, 2개가 가능하다. n=3일 때는 n=2인 경우에 2x1 한 개를 오른쪽에 붙이거나 n=1인 경우에 1x2 두 개를 오른쪽에 붙이는 경우를 생각해 볼 수 있다. 같은 방식으로 n=4일 때는 2x1 한개를 n=3인 경우의 오른쪽에 붙이거나 1x2 두개를 n=2인 경우의 오른쪽에 붙이는 경우를 생각해 볼 수 있다. 결국 n=k일 때 개수는 n=k-1 일 때와 n=k-2일 때의 경우를 합하면 된다. 그래서 이에관하여 코드를 작성해보면 #include using namespace std; int dp[1001] = {0}; int main(){ ios_base::sync_with_stdio.. 2021. 12. 28. 아두이노 메가와 OLED, BLE(HM-10) 연동 오류 해결 전에 아두이노 우노에서 oled와 블루투스 모듈을 한번에 사용하려고 했다가 메모리 문제로 인해 동시 사용을 못하게 된 후 (바로 그 문제를 직면했던 날 게시글) https://waytocse.tistory.com/76 [아두이노] Uno에서 Adafruit_SSD1306와 SoftwareSerial 동시 사용 불가(OLED와 Bluetooth) 아래 상황 처럼 위의 스캐치를 업로드 한 경우 Adafruit_SSD1306와 SoftwareSerial 즉, OLED와 Bluethooth모듈을 동시에 사용하고 싶은 경우 위 스캐치는 업로드 되고 작동 잘 되는데 아래 스케치에서는 Oled waytocse.tistory.com 바~~~로 아두이노 메가를 샀다. (비싸...) 그런데 아두이노 우노에서 돌아가던 코드.. 2021. 12. 12. 이전 1 2 3 4 5 ··· 7 다음