알고리즘(14)
-
[알고리즘] 약수, 완전수, 부족수, 과잉수
약수 어떤 수로 정수가 나누어 떨어지는 수 ex) 8의 약수는 1, 2, 4, 8 완전수 자신을 제외한 약수의 합 = 자신 ex) 6의 약수는 1, 2, 3, 6 6을 제외한 수를 더하면 (1+2+3=6) 6으로 자신과 값이 같음 부족수 자신을 제외한 약수의 합 자신 ex) 20의 약수는 1, 2, 4, 5, 10, 20 20을 제외한 수를 더하면 (1+2+4+5+10=22) 22로 자신보다 값이 큼
2021.10.01 -
[알고리즘] 이진 검색(Binary Search)
이진 검색 찾을 데이터를 반씩 나눠가면서 원하는 데이터를 찾는 방식입니다. 아래는 1번지부터 10번지까지 데이터가 저장되어 있는 일차원 배열입니다. 만약 변수 key에 5를 받았다면 배열 안에 저장된 데이터에 5가 있는지 찾고 그 주소를 출력하는 것입니다. 원하는 데이터가 배열 안의 몇 번지에 위치하는지 찾는 방식인데요. 이진 검색은 처음에 말했다시피 찾을 데이터를 반씩 나눠가는데요. 전제조건으로 데이터가 오름차순이나 내림차순으로 정렬되어 있어야 이진 검색을 사용할 수 있습니다. 검색 방법은 먼저 배열 중 가운데 값을 찾습니다. 위의 배열에서는 (5) 번지가 되겠네요. 이 (5) 번지의 데이터 7 과 찾을 key 값을 비교합니다. 값을 비교해보니 찾을 값이 (5) 번지의 데이터 보다 작습니다. 그렇다면 ..
2021.09.30 -
[알고리즘] 대각선 채우기
대각선 채우기 5행 5열의 배열이 존재할 때 아래와 같은 형식으로 데이터가 들어가는 것을 말합니다. 데이터가 들어가는 순서는 대각선 방향이며 총 9회전 되는 형식인데요. 이렇게 2차원 배열이 나오게 되면 데이터가 들어가는 순서의 규칙을 찾아야 하는데 규칙을 찿기 위해서 데이터의 주소값을 살펴보겠습니다. 여기서 규칙을 찾을 수 있는데요. 회전 마다 주소값의 행과 열을 더한 값이 같은 걸 볼 수 있습니다. 여기서 또 하나 알 수 있는 건 만약 행이 변수처리 되어 있다면 역으로 더한 값에서 행을 빼는 방식으로 열을 구할 수 있다는 겁니다.
2021.09.29 -
[알고리즘] 마방진
마방진 규칙 1. 처음 숫자 1은 1행 가운데 열에서 시작합니다. 2. 행이 감소(5행→4행, 4행→3행...)되고, 열은 증가(1열→2열, 2열→3열...)하면서 다음 데이터가 들어갑니다. 결과적으로 오른쪽 대각선 방향으로 다음 데이터가 들어갑니다. 3. 행이 점차 감소하다가 1행→0행이 되면 마지막 행으로 이동합니다. 4. 열이 점차 증가하다가 마지막 열이 되면 1열로 이동합니다. 5. 5의 배수이면 행만 1행 증가합니다. 6. 위의 조건으로 숫자를 채워나가다 보면 가로, 세로, 대각선의 합이 모두 동일한 마방진이 완성됩니다.
2021.09.28 -
[알고리즘] 직각삼각형 만들기
직각삼각형이란 데이터의 위치가 직각 삼각형 모양을 띄고 있는 형태를 말하는데요. 형태는 아래와 같은 형태를 띌 수도 있고 반대의 형태도 있고 그밖에도 여러 형태를 띌 수 있겠죠. 아래의 형태를 예시로 들어 알고리즘 풀이를 해보겠습니다. 데이터가 들어가는 순서를 보면 행은 고정된 상태에서 열에 따라 오른쪽으로 데이터가 들어가는 걸 볼 수 있습니다. 행고정 열변화 형태인데요. 행고정 열변화에 대해서는 포스팅을 참고해주세요! https://ho-ding.tistory.com/52 행을 i, 열을 j로 선언한다면 행 i 변수의 반복할 규칙은 i = 1, 5, 1 (시작값, 끝값, 증가값)으로 단순하나 열 j 변수의 규칙은 끝값을 상수로 처리하기가 어렵습니다. 위와 같이 변수 j 는 1행에서는 1열, 2행에서는 ..
2021.09.27 -
[알고리즘] 행고정 열변화, 열고정 행변화
배열 선언 준비 단계에서 A(5, 5) 를 선언한다면 5행 5열의 배열을 만들라는 뜻입니다. 조건에 따라 1행 1열부터가 아닌 0행 0열부터 시작할 수 있으니 주의해야 합니다. 행고정 열변화 말그대로 행을 고정한 상태에서 열이 바뀌는 것 데이터가 들어가는 순서가 행이 고정된 상태에서 가로로 진행된다면 행고정 열변화입니다. 순서가 1행 1열, 1행 2열, 1행 3열 순으로 들어가는 것이죠. 순서도는 이중 for문 구조로 나타낼 수 있습니다. 먼저 바깥쪽 변수 i에서 1을 고정한 상태에서 안쪽 변수 j를 1부터 5까지 반복하는 형태입니다. i를 고정하고 j가 증가하는 형태이니 i가 행, j가 열이 되겠죠. 열고정 행변화 반대로 열을 고정한 상태에서 행이 바뀌는 것 데이터가 들어가는 순서가 열이 고정된 상태에..
2021.09.25