알고리즘 단련장/소프티어

[소프티어] 위험한 효도 레벨 1 자바 풀이

dcho 2024. 10. 28. 20:30
SMALL

https://softeer.ai/practice/7368

 

Softeer - 현대자동차그룹 SW인재확보플랫폼

 

softeer.ai

 

 

 

그림상 Lv.2 라고 되어 있지만 Lv.1으로 필터가 되어있는 신기한 문제

다른 Lv.1 문제 보다 조금 난이도가 있는 문제 였다.

 

문제를 한방에 해결하려고 하지 않고 1초씩 생각하고 총 거리수는 d * 2 로 제한이 있기 때문에 그 안에서 반복과 조건으로 한땀한땀 나아가는 방식으로 천천히 생각했다.

 

신경써야 하는 부분은 a,b가 교체되는 시점을 잘 생각하면 금방 풀리는것 같다.

 

import java.io.*;
import java.util.StringTokenizer;

public class Main {
    public static int dap = 0;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");

        // a: 뒤돌아 있는 시간, b: 앞을 바라보고 있는 시간, d: 술래와의 거리
        int a = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());
        int d = Integer.parseInt(st.nextToken());

        // 이동 거리 게산 변수
        int moveDistance = 0;

        // 총 이동 거리 만큼 반복
        while (moveDistance < d * 2) {
            for (int i = 0; i < a; i++) {
                moveDistance++;
                dap++;
                // 술래 터치 및 출발선으로 다시 돌아왔을때 기준으로 a,b 변경
                if (moveDistance == d || moveDistance == d * 2) {
                    int temp = a;
                    a = b;
                    b = temp;
                    break;
                }
            }
            // 앞을 바라 보고 있을 때 흘러가는 시간 체크
            if (moveDistance != d && moveDistance != d * 2) {
                dap += b;
            }
        }

        bw.write(dap + "\n");

        bw.flush();
        bw.close();
    }
}