목록소스 (10)
Prosto
배열에 대한 연습 문제를 풀어보는 네 번째 시간입니다. (이번엔 1차원 배열)전 시간까지는 규칙을 찾고 로직을 구성하는 문제들이었지만,이번 시간부터는 배열과 반복문, 조건문을 이용하여 특정 문제를 해결하면 됩니다.그럼, 이번에는 순위를 구하는 문제를 풀어보도록 하겠습니다. 문제에 대한 설명과, 완성된 소스는 제공합니다.소스에서 설명이 필요한 부분은 주석이나 별도의 코멘트를 달아 설명하도록 하겠습니다. 문제는 두 가지입니다. 첫 번째는 배열이 가지고있는 숫자가 큰 순서대로 등수(순위)를 주고, 두 번째는 배열이 가지고있는 숫자가 작은 순서대로 등수(순위)를 주는 것입니다. (배열이 가지고 있는 숫자는 편의상 점수라고 생각하며 진행하겠습니다.) 문제1. 0번 학생부터 9번 학생까지 10명의 점수를 담고있는 ..
'사용자 정의 함수 - 이미 만들어진 함수를 사용하듯 직접 새로운 함수를 정의하여 사용하는 방법!' 프로그래밍을 하다보면 같은 작업을 변수 몇 가지만 바뀌어서 처리하거나,특정 기능을 만들어서 필요할 때마다 사용하고 싶은 경우가 있습니다.그런 때 사용할 수 있도록 해주는 게 사용자 정의 함수입니다. 지금까지 우리가 배웠던 것들을 그대로 함수로 만들 수 있습니다.예를 들면, 두 수를 전달해주면 더하기 기능을 해주는 함수를 만들 수도 있고, 구구단 중 특정 단을 출력해주는 기능을 하는 함수를 만들 수도 있습니다. 실제로 게임에서도 캐릭터가 이동하는 기능을 하는 함수, 공격을 하는 함수, 체력을 표시해주는 함수같이 여러 개의 함수를 만들어서 사용하게 됩니다. 함수에도 지금까지 했던 것처럼 일정한 규칙이 있지만,..
'빠르게 정렬하는 방법으로 가장 많이 사용되는 퀵정렬' 퀵 정렬은 빠른 정렬이나 퀵 소트(Quick Sort)라고도 부릅니다. 퀵 정렬(Qucik Sort)는 데이터를 정렬하는 방법 중 하나입니다. 데이터를 분할(Divide)하고 분할된 부분 별로 이동하는 정복(Conquer) 과정을 반복하여 거쳐 정렬하는 방법입니다. (지금까지의 정렬들과 달리 조금은 복잡합니다만 보고, 직접 해보며 이해할 수 있을 겁니다.) 성능을 Big O로 표기한다면 average, best = O(n log n)이고, worst = O(n^2)입니다. 일반적으로는 O(n log n)의 성능을 내주지만, 피봇(중심점이) 항상 최솟값이나 최댓값으로 잡힌다면 최악의 성능인 O(n^2)이 나옵니다. 참고로 지금까지 했던 (선택, 삽입,..
'검색할 범위를 반으로 줄여가며 찾아가는 이분 검색(Binary Search)' 이분 검색은 검색할 자료를 반씩 나누어 나머지 반만 검색하는 방식을 반복하여 자료를 찾는 검색(탐색) 방법입니다. 이 이분 검색을 이용하여 자료를 찾는다면 빠른 속도로 원하는 자료를 찾을 수 있습니다. (단, 이분 검색은 정렬되어있는 데이터에 사용할 수 있습니다.) (정렬 방법은 블로그 내의 다른 글을 참고하시면 도움이 될 것 같습니다.) 성능을 Big O로 표기한다면 O(log n)입니다. 자료가 2개라면 1번, 4개(2^2개)라면 2번, 8개(2^3개)라면 3번, 16개(2^4개)라면 4번, ... 1,024개(2^10개)라면 10번, 1,048,576개(2^19개)라면 최대 19번이면 찾습니다. 굉장히 빠르죠? 실제 배..
'맞는 위치에 삽입시켜가며 정렬하는 삽입정렬' 삽입정렬은 Insertion Sort라고도 부르며 데이터 정렬 방법 중 하나입니다. 키(key) 값을 가지고 정렬시키는 삽입 정렬은 두 번째 자료부터 시작하여 그 앞의 자료들과 비교하여 알맞은 위치로 삽입하는 형태의 정렬입니다. (배열로 보는 경우 삽입이라면 뒤의 자료들은 한 칸씩 밀리는 형태가 되겠죠?) (아래 데이터 이동 그림을 보시면 이해하시기 더 좋을 것이라 생각됩니다.) 여러 회전을 반복하여 정렬하는 방법입니다. 첫 번째 회전에서는 두 번째 자료를 키 값으로 가지고 앞의 자료들을 하나씩 비교합니다. 두 번째 자료의 앞 자료는 첫 번째 자료 하나밖에 없으니 하나만 확인하면 됩니다. 첫 번째 자료가 키 값보다 크다면 두 번째 자료를 첫 번째 자료로 바꿔..
'선택하여 차례대로 정렬하는 선택정렬' 선택 정렬은 데이터를 정렬하는 방법 중 가장 기본적인 방법으로 첫 번째 자료부터 마지막 자료까지 하나씩 순서대로 정렬해가는 방식입니다. 오름차순이라면 가장 낮은 숫자가 첫 번째, 가장 높은 숫자가 마지막이 되겠죠? (내림차순이라면 그 반대의 결과가 나오겠죠?) 그렇다면 이 선택 정렬은 어떻게 이루어지는 걸까요? 오름차순을 기준으로 이야기하자면 이렇습니다. 첫 번째 위치인 가장 낮은 값을 찾기 위해서 두 번째부터 마지막까지 낮은 값을 확인하여 첫 번째 값을 결정합니다. 그 과정에서 현재 위치의 값보다 작은 값을 만나면 서로의 값을 교환해줍니다. 그 후 두 번째로 낮은 수를 찾기 위해서 세 번째부터 마지막까지 현재 두 번째 자리의 수보다 낮은 값이 있는지 확인하죠. 마..
따라하는 유니티 2D 프로젝트ⓑ 강좌 여섯 번째 시간입니다. 이번에 함께 할 작업은 볼이 떨어지기 전에 키퍼와 충돌하는 경우 떨어지던 볼을 다시 위쪽으로 보내는 처리를 할 것이고 (볼이 죽지 않도록) 다음으로 간단한 체력바를 만들어서 블록의 체력을 표시할 것입니다. (RPG 몬스터들 체력바와 비슷한 체력 게이지를 나타내는 바 입니다.) 그럼 시작하겠습니다. 가장 먼저 저번에 작업했던 프로젝트를 실행합니다. 그리고 순서대로 직접 해보며 따라오시면 됩니다. 먼저 지금은 볼키퍼를 만들어 볼이 죽지 않도록 도와주는 객체를 만들 것입니다. (기존의 객체(생성 전에 보이는 투명한 구)를 이용합니다.) 먼저 새로운 스크립트 작성을 하기 위하여 Scripts - Ball 폴더에 Create - C# Script로 스크..
배열에 대한 연습 문제를 풀어보는 두 번째 시간입니다. 배열과 for문(반복문) 사용을 할 수 있어야합니다.배열을 잘 모르겠다면?'[C언어] 배열(Array)의 이해와 예제, 문제' 이런 규칙을 찾고 그걸 만드는 것은프로그래밍 로직을 구성할 수 있는 훈련을 할 수 있으니어떻게 하면 만들 수 있을지잘 생각해보고 만들어보시면 좋을 것 같습니다. 완성된 소스는 제공합니다.설명이 필요한 부분은 간단하게 설명(혹은 주석)도 함께 올리도록 하겠습니다.(각자 자신만의 소스가 나올 수도 있겠죠.) 두 번째 시간의 문제도 배열에서 간단한 문제일 것이라 생각됩니다.아마도 배열 초반 부분은 이런식의 문제일 겁니다.기초를 다지는 의미에서 문제마다 새로운 project를 생성하여 작성해보세요. 문제1. 아래의 사진과 같이 5x..
배열에 대한 연습 문제를 풀어보는 첫 번째 시간입니다. 배열과 for문(반복문) 사용을 할 수 있어야합니다. 배열을 잘 모르겠다면? '[C언어] 배열(Array)의 이해와 예제, 문제' 배열 연습 문제는 먼저 배열 안에 숫자를 원하는 대로 넣을 수 있는지에 대한 부분부터 단계적으로 살펴보며 진행하겠습니다. 이런 규칙을 만드는 부분은 프로그래밍 로직을 생각하는 부분과 관계가 깊으니 어떻게 하면 만들 수 있을지 생각해보고 만들어보시면 좋을 것 같습니다. 물론, 완성된 소스는 제공합니다. 설명이 필요한 부분은 간단하게 설명도 함께 올리도록 하겠습니다. 첫 번째 시간의 문제는 배열에서 가장 간단한 문제일 것이라 생각됩니다. 문제1. 아래의 사진과 같이 5x5 배열에 숫자를 넣고, '실행 결과 예'와 같이 출력하..
'배열 - 변수들을 필요한 만큼, 여러 개를 한번에 만들고, 사용할 수 있는 방법!' 프로그래밍을 하다보면 한 종류의 여러 개의 변수가 필요한 경우가 있습니다. 또는 단순 반복 작업을 간단하게 처리하고 싶지만, 변수 이름이 여러 개라면 그렇게 하기 힘들죠. (하나씩 일일이 입력해줘야죠....) 이런 때에 사용되는 게 바로 배열입니다. 예를 들어 학생 100명의 테스트 점수를 받고싶은데, 그 점수를 받는 변수들을 배열을 사용하지 않는다면 어떻게 받아야 할까요? int student1, student2, student3, student4, student5, ... , student99, student100 이렇게 1번 학생부터 100번 학생까지 일일이 만들어줘야겠죠? 그러면 입력 받을 때는 어떻게 될까요? ..