알고리즘/문제 풀이(6)
-
[알고리즘] 90도 회전
A, B 두 개의 2차원 배열이 있을 때 A배열에서 90도를 회전시킨 값이 B배열입니다. A배열은 행이 고정된 상태에서 열이 변화하는 형태이고 B배열은 열이 고정된 상태에서 행이 변화하는 형태인데요. 데이터의 위치를 보면 유사한 공통점을 찾을 수 있습니다. A(1, 1) → B(1, 5) A(1, 2) → B(2, 5) A(1, 3) → B(3, 5) A(1, 4) → B(4, 5) A(1, 5) → B(5, 5) A(2, 1) → B(1, 4) A(2, 2) → B(2, 4) A(2, 3) → B(3, 4) A(2, 4) → B(4, 4) A(2, 5) → B(5, 4) 순으로 반복되는 걸 알 수 있는데요. A배열의 열에 사용된 값이 B배열의 행으로 사용되고 6에서 A배열의 행값을 빼면 B배열의 열값이..
2021.10.08 -
[알고리즘] 다이아몬드 만들기
2차원 배열에서 다이아몬드 형태로 데이터가 들어가는 것을 말합니다. 이러한 2차원 배열은 특징이 있는데요. 센터값을 기준으로 대칭이 일어나는 규칙을 갖고 있습니다. 형태는 다이아몬드뿐만 아니라 다양할 수 있는데요. 아래의 다이아몬드 형태의 예시에서는 행이 고정된 상태에서 열이 변화하면서 데이터가 들어가는 걸 알 수 있습니다. 행마다 데이터가 들어간 자리는 이와 같습니다. 보면 일정한 규칙이 있는데요. 행이 증가하면서 열의 시작값은 -1, 끝값은 +1씩 변화하다 가운데를 기준으로 반대부터는 시작값이 +1, 끝값은 -1씩 변화하는 걸 알 수 있습니다. 이를 활용한 알고리즘 문제의 순서도를 알아보겠습니다. 5행 5열의 2차원 배열에 다음과 같은 순서로 값이 저장될 때의 순서도입니다. 행에서의 반복 1, 5, ..
2021.10.07 -
[알고리즘] ㄹ자 채우기
ㄹ자 채우기 2차원 배열에 ㄹ자 방향으로 데이터가 들어가는 방식입니다. 행이 고정된 상태에서 열이 변화하면서 데이터가 들어간 형태로 방향은 아래와 같습니다. 첫 행은 1열부터 5열까지 1씩 증가하는 형태, 다음 행은 5열 부터 1열까지 1씩 감소하는 형태가 반복됩니다. 이 때 열의 시작값, 끝값, 증가값이 바뀌기 때문에 상수 처리를 할 수 없어 변수로 처리를 해야 합니다. 변화하는 값을 확인해보니 일정한 패턴이 보이는데요. 첫 행의 시작값은 다음 행의 끝값으로, 첫 행의 끝값은 다음 행의 시작값으로, 첫 행의 증가값에서 -1을 곱한 값이 다음 행의 증가값으로 반복되는 걸 알 수 있습니다. 교환로직 일반적으로 A, B라는 두 저장공간이 있을 때 A값과 B값을 서로 바꿀 때 A값을 B값으로 옮기면 기존의 B..
2021.10.06 -
[알고리즘] 직각삼각형 만들기
직각삼각형이란 데이터의 위치가 직각 삼각형 모양을 띄고 있는 형태를 말하는데요. 형태는 아래와 같은 형태를 띌 수도 있고 반대의 형태도 있고 그밖에도 여러 형태를 띌 수 있겠죠. 아래의 형태를 예시로 들어 알고리즘 풀이를 해보겠습니다. 데이터가 들어가는 순서를 보면 행은 고정된 상태에서 열에 따라 오른쪽으로 데이터가 들어가는 걸 볼 수 있습니다. 행고정 열변화 형태인데요. 행고정 열변화에 대해서는 포스팅을 참고해주세요! https://ho-ding.tistory.com/52 행을 i, 열을 j로 선언한다면 행 i 변수의 반복할 규칙은 i = 1, 5, 1 (시작값, 끝값, 증가값)으로 단순하나 열 j 변수의 규칙은 끝값을 상수로 처리하기가 어렵습니다. 위와 같이 변수 j 는 1행에서는 1열, 2행에서는 ..
2021.09.27 -
[알고리즘] 에라토스테네스의 체를 이용해 소수 구하기(JAVA)
소수(prime number) 1보다 큰 양의 정수 중에서 1과 자기 자신만으로 나누어 떨어지는 수를 말합니다. 에라토스테네스의 체 대표적인 소수 판별 알고리즘입니다. 1은 소수가 아니므로 2부터 소수를 구하려는 구간의 수를 모두 나열한 뒤 2의 배수부터 지워나가면 됩니다(2의 배수를 지운다면 자기 자신인 2는 지우지 않습니다) 1부터 50까지 소수 구하기 1. 2의 배수부터 지워나갑니다.(자기 자신은 지우지 않습니다) 2. 이미 지워진 숫자는 건너뛰고 3의 배수를 지웁니다.(자기 자신은 지우지 않습니다) 3. 위와 같은 방법을 반복해 지워나가면 소수만 남아있게 됩니다. 에라토스테네스의 체를 이용해 1부터 50까지의 소수 구하는 법을 JAVA 소스로 구현해보겠습니다. 1 2 3 4 5 6 7 8 9 10..
2021.09.24 -
[알고리즘] 분수 수열 덧셈
분수 수열 문제의 해법 1. 분자, 분모의 상호 연관성이 있는지를 확인 2. 분자, 분모의 반복 규칙을 따로 찾음 3. 분자, 분모의 변수 중 어느 것으로 반복되었는지 확인 ※ 예제 1/2+2/3+3/4+...+49/50을 구하여 출력하는 순서도를 작성하세요. 위의 분수 수열 문제의 해법 중 분자, 분모의 상호 연광성이 있는지 확인해보면 분모 값이 분자 값 보다 1이 크다는 연관성을 알 수 있습니다. 이런 연관성을 변수로 표현한다면 i / (i+1) 이런 방법으로 표현할 수 있습니다. 분자에만 변수를 i로 선언했기 때문에 지금과 같은 경우에는 STOP을 하려면 분자 변수로 선언한 i로 끝을 내야 합니다. 때문에 i값이 49일 때까지 진행하게 하면 됩니다. 순서도를 나타내면 이와 같습니다. i 와 SUM ..
2021.09.23