23631번 - 진심 좌우 반복뛰기
2024-04-03
#JAVA#백준
문제 풀이 시간 : 30분
문제 요약
- •
진심 좌우 반복뛰기한 거리의 총합이 Nm이상이면 “대머리”가 된다
- •
진심 좌우 반복뛰기는 처음 x=0에서 시작
- •
오른쪽으로 Km 뛴 다음 방향을 바꾼다.
- •
대머리가 되지 않기 위해 (N-1)m만큼만 뛴다.
- •
멈췄을 때의 위치와 방향을 구해라
문제 풀이
문제는 상당히 쉬워보였는데
내용이 재밌어서 그냥 풀었다
정답 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.Buffer;
import java.util.*;
public class Main {
public static int T,n,k,cur,temp;
public static char run(){
cur = 0;
temp = k;
while(n>Math.abs(k)){
cur+=k;
n-=Math.abs(k);
if(k<0){
k=-(k-temp);
}
else
k=-(k+temp);
}
if(k<0){
cur-=n-1;
return 'L';
}
else {
cur += n-1;
return 'R';
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
T = Integer.parseInt(br.readLine());
for(int i=0;i<T;i++){
StringTokenizer st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
k = Integer.parseInt(st.nextToken());
char result = run();
sb.append(cur+" "+result+"\n");
}
System.out.println(sb);
}
}