전체 글71 [C][2차원배열]달팽이 배열 달팽이 배 달팽이 배열은 2차원 배열에 숫자를 소용돌이 모양으로 초기화하는 배열입니다. 모습은 다음과 같습니다. n x n 배열에서 규칙을 찾아보면 첫 인덱스부터 가로 n, 세로 n-1, 가로 n-1, 세로 n-2 순으로 돌아가는 것을 알 수 있습니다. 즉, 5 x 5 배열에서 보면 5 4 4 3 3 2 2 1 1 순으로 가로와 세로를 번갈아가며 초기화하는 것을 볼 수 있습니다. 그리고 가로와 세로가 세트로 돌아올 때마다 index의 변화가 양수 -> 음수, 음수 -> 양수로 변하는 것도 볼 수 있습니다. 이를 통해 먼저 5 4 4 3 3 2 2 1 1 순으로 반복하는 규칙과 가로와 세로를 한 세트로 하되 index의 변화가 양수 -> 음수, 음수 -> 양수로 변화하는 규칙 두 가지를 가지면 됩니다. i.. 2018. 1. 2. [C][2차원 배열]홀수 마방진 마방진 마방진은 n2개의 수를 가로, 세로, 대각선 방향의 수를 더하면 모두 같은 값이 나오도록 n × n행렬에 배열한 것이다. n이 2일 때를 제외하고 항상 존재한다. 각 행의 합과 각 열의 합, 그리고 각 대각선의 합 M은 n에만 관계가 있고, 이 값은 다음과 같다. M(n) = (n3+n)/2 홀수 마방진 마방진에는 n이 홀수인 경우와 짝수인 경우로 나뉜다. 짝수의 경우 홀수의 경우보다 좀 더 복잡하다. 여기서는 홀수 마방진의 경우만 고려한다. 규칙 1. 행렬(2차원 배열)의 첫 번째 행, 가운데 열의 위치에서 시작한다. 2. 다음 숫자를 대각선 방향으로 오른쪽 위 칸에 넣는다. 2-1. 열의 범위를 벗어난 경우 열의 처음으로 이동한다. 2-2. 행의 범위를 벗어난 경우 행의 마지막으로 이동한다. .. 2018. 1. 2. [C][2차원배열] 지그재그 초기화 지그재그 초기화 1번째 방식 첫 번째 index부터 초기화를 하고 데이터와 가로 index의 값을 가로의 길이만큼 반복하여 +1 or -1씩 해주는 방법이다. 이렇게 하면 반복의 마지막에 가로의 index를 넘어가기 때문에 가로의 index를 맞춰주고 세로의 index를 +1 해준다. 그림으로 표현하면 이렇다. int arData[4][3] = {}; int nData = 0; int nX = 0; int nY = 0; int nAdd = 0; nData = 1; nAdd = 1; for (int i = 0; i < 4; i++) { for (int j = 0; j < 3; j++) { arData[nY][nX] = nData; nX += nAdd; nData++; } nAdd *= -1; nX += n.. 2018. 1. 1. [C][배열] Index 변수 배열 Index 변수 배열을 처음 배우면 가장 일반적으로 보게 되는 코드가 있다. for (int i = 0; i < 10; i++) { arData[i] = i + 1; } 바로 위의 코드처럼 for 반복문을 통해서 배열을 초기화하는 코드이다. 위 코드에서 보면 for 반복문에서 사용하는 반복의 횟수에 사용되는 변수 i를 사용하여 배열을 초기화하고 있다. 예제이기 때문에 신경쓰지 않고 사용했었지만 for 반복문에서 사용되는 변수 i는 index로만 사용해야 한다고 한다. 변수 i를 통해서 연산을 하는 것은 매우 좋지 않다고 한다. index로 사용되는 변수를 연산에 사용하게 되는 경우 만약 index의 값이 변경되는 경우 연산의 결과에 영향을 미치기 때문이다. 이런 사소한 코딩 방법론을 무시하면 나중에.. 2018. 1. 1. [C][배열] indexing 프로그래밍 배열 indexing 프로그래밍 C 언어에서 배열을 사용할 때 index를 활용하면 좋다. 예제로 int형 배열에서 최대 값을 찾는다고 하자. int arData[10] = { 124, 21, 323, 45, 5223, 684, 734, 823, 922, 130 }; int nSum = 0; for (int i = 0; i < 10; i++) { if (nSum < arData[i]) nSum = arData[i]; } 위의 코드처럼 int형 변수를 하나 선언해서 여기에 배열 요소 하나하나 비교해서 큰 값을 저장하고 마지막에 가장 큰 값을 출력하고 있다. 물론 정수 비교이기 이렇게 해도 상관없다. 하지만 이게 다른 type의 변수를 사용한다면 문제가 생기기 시작한다. 그래서 배열의 값을 저장하는 것이 아.. 2018. 1. 1. 이전 1 ··· 9 10 11 12 다음