Skip to content

Latest commit

 

History

History

17822

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

문제풀이

원판을 회전시킨다음 인접한 같은 숫자를 지우고 남은 수의 합을 구하는 구현 문제이다.

입력

  • n, m, t : 최대 반지름이 n 이고 m 개의 정수가 적힌 원판을 t 번 회전
  • n 개의 줄에 원판에 적힌 수
  • t 개의 줄에 회전 방법 : x 의 베수인 원판을 d(0이면 시계 1이면 시계반대)방향으로 k 칸 회전

로직

  1. 입력값 받기
  2. 함수 구현
    • rotate: i번째 원판을 d 방향으로 k 칸 회전하는 함수
    • findAdjSameNumber: 인접하면서 같은 수를 찾아서 지우고 지운게 있으면 true, 없으면 false를 반환하는 함수
    • isNotAdjSmaeNumber: 원판에 적힌 모든 수의 평균을 구하고 평균보다 큰 수는 1을 빼고 작은 수는 1을 더하는 함수
  3. t개의 회전 방법 만큼 반복한다.
    1. n까지 x의 배수 만큼 반복하면서 rotate 함수를 호출한다.
    2. 모든 원판에 대해서 findAdjSameNumber 함수를 호출한다.
    3. (2)를 모두 수행한 후 인접한 같은 숫자가 하나도 없으면 isNotAdjSmaeNumber 함수를 호출한다.
  4. 원판에 남은 모든 수의 합을 구해서 반환한다.

맞왜틀

  • 하나의 회전 방법 마다 회전, 인접한 같은 숫자 찾기, 없으면 평균을 기준으로 덧셈뺄셈을 수행해야 하는데 함수를 잘못 위치 시켰다.
  • 원판을 회전시키고 인접한 같은 숫자를 찾을 때 visited 배열을 초기화 시켜주지 않았다.
  • 인접한 원판을 찾을 때 (x + nx + m) % m 으로 x - 1 위치에 있는 원판도 확인 해야 된다.

리팩토링 및 다른 풀이 비교