관리 메뉴

여름 언덕에서 배운 것

공 던지기 ,원형 큐에서 다음 위치 찾기, 보드 게임(말판 이동)에서 N칸씩 이동 공통점 본문

가랑비에 옷 젖는 줄 모른다 💻/🌰코테문풀_꾸준히

공 던지기 ,원형 큐에서 다음 위치 찾기, 보드 게임(말판 이동)에서 N칸씩 이동 공통점

잔뜩 2025. 3. 7. 11:23

공던지기 문제를 풀다가 지피티가 비슷한 유형의 문제를 풀 때 이 방식을 활용해보라고 조언 해줌 

 

원형(순환) 구조를 다룰 때 많이 쓰이는 패턴


🟢 "현재 위치에서 일정한 간격으로 이동하는 순환 구조" 공식

👉 (현재 위치 + 이동할 칸 수) % 배열 길이

 

이 공식을 적용하면:

  1. 배열 끝을 넘어가면 자동으로 처음으로 돌아오고
  2. 배열 안에서 적절한 위치를 찾아줍니다.

🔹 이 공식을 쓰는 대표적인 문제들

  1. 공 던지기 (한 칸 건너뛰기)
    index = (index + 2) % numbers.length;
  2. 원형 큐 (Circular Queue)에서 다음 위치 찾기
     
    rear = (rear + 1) % queue.length;
  3. 보드 게임(말판 이동)에서 N칸씩 이동하는 경우 
newPosition = (currentPosition + steps) % boardSize;

 

🔥 예제 1: 공 던지기 문제

class Solution {
    public int solution(int[] numbers, int k) {
        int index = 0;
        for (int i = 1; i < k; i++) { // k번째가 될 때까지 반복
            index = (index + 2) % numbers.length; // 2칸씩 이동
        }
        return numbers[index]; // k번째 공을 받은 사람의 번호 반환
    }
}

 

🔥 예제 2: 보드 게임 (말판 이동)

int boardSize = 10; // 보드판의 칸 개수 (1~10)
int currentPosition = 7; // 현재 위치
int steps = 4; // 이동할 칸 수

int newPosition = (currentPosition + steps) % boardSize;
System.out.println(newPosition); // 1 (10을 넘어가면 다시 처음으로) 
728x90