알고리즘 단련장/소프티어
[소프티어] 위험한 효도 레벨 1 자바 풀이
dcho
2024. 10. 28. 20:30
SMALL
https://softeer.ai/practice/7368
그림상 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();
}
}