Languages/Java

[자바 객체 지향 프로그래밍] 05. 자바, 더 간편하게!

Dev다D 2021. 3. 3. 14:46
반응형

김신 장군 살리기

 

n명의 군사들이 동그랗게 서있고, 한 명씩 세어 나가서 매 k 번째 사람이 죽기로 합니다.

예를 들어서 8명의 군사들이 있고 3명마다 죽기로 하면 이 순서로 군사들이 죽게 됩니다.

 

3 => 6 => 1 => 5 => 2 => 8 => 4 => 7

 

하지만 야비한 김신 장군은 자신이 마지막으로 남아서 도망가려는 속셈인데요. 파라미터로 정수 n과 정수 k를 받고, 김신 장군이 살기 위해 서있어야할 자리(int)를 리턴해주는 메소드 getSurvivingIndex를 쓰세요.

ArrayList를 사용하세요!

 


import java.util.ArrayList;

public class Main {
    public static int getSurvivingIndex(int n, int k) {
        ArrayList<Integer> soldiers = new ArrayList<>();

        for(int soldierNumber = 1; soldierNumber <= n; soldierNumber++) {
            soldiers.add(soldierNumber);
        }

        int killIndex = 0;

        while (soldiers.size() > 1) {
            killIndex = (killIndex + k - 1) %soldiers.size();

            System.out.println(soldiers.remove(killIndex) + "번 군사가 죽었습니다.");
        }
        return soldiers.get(0);
    }
    public static void main(String[] args) {
        System.out.println("김신은 " + getSurvivingIndex(20, 5) + "번 자리에 서있으면 됩니다.");
    }
}

본 내용은 Codeit의  '자바 기초' 강의를
참고하여 작성한 내용입니다.

 

반응형