JAVA 2차원 배열 (matrix) 회전 공식 완벽 정리!
1. 시계방향으로 90도 회전Before(R,C) 는 원래 행렬에서의 원소의 위치를 말하는 것이고, After()는 바뀐 행렬에서 동일한 원소의 위치를 말하는 것이다.예를 들어, 원소 '9'는 (1,3) 이다. 따라서 바뀐 행렬에서는 공식대로하면 (3,3) 이다. 실제로도 그렇다.2. 반 시계 방향으로 90도 회전 3. 배열 시계 방향 혹은 반 시계 방향으로 원소를 한 칸씩 이동idx, idy를 이용하여, 한 칸씩 이동.최초의 값을 temp라는 변수에 저장한다.idx,idy를 이용하여, 배열의 끝부분에서는 뱡향 전환을 하며, 동서남북으로 원소를 한 칸씩 옮긴다.마지막 원소는 최초의 값에 인접한 원소이다. 여기에는 temp의 값을 집어넣는다.
더보기
🖤 알고리즘 이론 - 순열과 조합 [JAVA]
0. 설명 하려는 것 (1) 순열, 조합, 중복 순열, 중복 조합의 정의 (2) JAVA 언어를 썼을 때, 구현 방법 1. 순열 (1) 순열의 뜻 nPr = n 개 중에서 r개를 중복 없이 뽑아서 순서 있게 나열하는 것을 말한다. 따라서 {1, 2, 3, 4, 5} 중 5P3 에서 {1, 2, 3} 과 {1, 3, 2}는 다른 숫자이다. (2) 구현 방법 순열은 재귀로 구현한다. 순열을 재귀로 구현하기 위해서는 다음과 같은 구성요소들이 필요하다. 전체 원소들에 대한 방문 배열 isVisited [] : 순열로 값을 뽑을 때, 중복이 없어야 하므로, 방문 배열을 통해, 이미 방문한 지점은 그냥 지나치도록 구현 해야 한다. 뽑힌 r개의 원소를 담을 배열 output [] : 전체 원소가 담긴 배열을 arr ..
더보기
🖤LIS 알고리즘의 이론과 구현
1. LIS란? LIS란 Longest Increasing Subsequence의 약자로 가장 긴 증가하는 부분 수열을 뜻한다. LIS 알고리즘 문제는 전체 수열을 주어지고, 그 안에서 가장 길고, 증가하는 부분 수열을 구해야 하는 문제들을 총칭이다. 난 부분 수열이 무엇인지부터 헷갈렸다. 따라서 먼저 수학적 배경지식을 공부하고, 마저 설명하겠다. 1-1. 부분 수열이란 무엇인가? 수열은 수가 하나의 열로 나열된 형태를 뜻한다. (행군하는 군인을 떠올려보라!) 여기서 부분수열이란 주어진 수열의 일부 항을 원래 순서대로 나열하여 얻을 수 있는 수열 을 뜻한다. 만약 전체 수열 S 가 {1,2,3,4,5,6,7,8,9,10}이라면 {1}, {2,4,6,8,10}, {2,4,6}, {8,9,10} 모두 S의 ..
더보기