# 원판 돌리기

문제에서 주어진 조건들을 구현하면 되는 문제다.

틀린 이유

1. x\[i] 배수에 해당하는 원판에 대해서만 처리해줘야하는떼 이 부분을 빼먹었을 뿐더러, 뒤늦게 알았지만 처리하지 못했음.⭐️\
   \=>행은 원판을 의미하므로, i-for문에서 각 행(원판)에 대해 연산을 반복할 때, 반복 변수 i의 증가식을 i+=x\[i]로 해주면된다!
2. j번째 숫잔는 0번째와 M-1번째가 인접해있기 때문에, 인접해 있는 숫자가 같은지 비교할 때 이 부분을 처리해줘야함!⭐️\
   if(j == 0 && Map\[i]\[j] == Map\[i]\[M-1])\
   if(j== M-1 && Map\[i]\[j] == Map\[i]\[0])
3. 숫자가 같은지 검사하고, 같다면 삭제처리, 같지 않다면 평균 값에 따라 증감시킨다.\
   \=> 원래 배열 값을 비교하면서 동시에 변형시키기 때문에 배열을 하나 더 생성하여(Map2), 기존의 배열Map 값으로 비교하되, 새로 생성한 배열에 값을 변경시켜주고, 작업이 다 끝난고 난 후에 Map에 Map2를 넣어준다!
4. 같은 숫자가 없을 때, 평균 구할 때 double 타입으로 평균을 저장한다. 평균 = 합/갯수이다.\
   합과 갯수는 int형에 저장해도된다. 하지만 double 타입의 평균을 구할 땐, int형 결과값인 합/갯수에 1.0을 곱함으로써 쉽게 double로 형변환할 수 있다!

2번째 풀었을 때 틀린 이유

1. 조건2에서 평균보다 작은 값을 갖는 Map\[i]\[j] 을 1 감소시켜야하는데, 이때 값이 없는 경우, 배열 값이 0이기 때문에, 이 경우는 Map\[i]\[j] == 0인 경우로서, 예외처리로 continue해야한다!
2. 2차원 배열을 순회함과 동시에 값 변형이 일어나므로 2차원 배열을 하나 더 생성해서 값을 복사하여 사용하는데, Map2 배열 값을 변형시켜야하는데 중간에 원본 Map에 값을 변형시켜버려서 틀렸다!
3. System.arraycopy 사용법!⭐️⭐️⭐️⭐️⭐️ 배열A를 배열B에 복사할 때!\
   ( ① , ② , ③ , ④ , ⑤ )\
   ① 배열 A\
   ② A 어디부터 읽을 것인지 인덱스\
   ③ 배열 B\
   ④ B 어디부터 쓸 것인지 인덱스\
   ⑤ A->B로 복사할 데이터 길이\
   \=>문법은 맞았지만, 2차원 배열에 대해서 사용할 때는 **각 행마다 반복해주어야한다.⭐️⭐️⭐️⭐️⭐️**\
   arraycopy는 1차원 배열 단위로 수행하는 것 같았다.
