
문제

내 풀이 1 : 48점
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
// 홀수일때는 더하고, 짝수일 때는 뺀다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int num = Integer.parseInt(br.readLine());
for (int i = 0; i < num; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int left = Integer.parseInt(st.nextToken());
int right = Integer.parseInt(st.nextToken());
int startPoint = Integer.parseInt(st.nextToken());
int index = 1;
int currentPoint = startPoint;
while (true){
if (currentPoint == left || currentPoint == right){
break;
}else{
if (index % 2 == 0){
currentPoint -= index;
}else{
currentPoint += index;
}
index++;
}
}
sb.append(index).append("\n");
}
System.out.println(sb.toString());
}
}
내 풀이 2 : 100점
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
// 홀수일때는 더하고, 짝수일 때는 뺀다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int num = Integer.parseInt(br.readLine());
int index = 0;
for (int i = 0; i < num; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int left = Integer.parseInt(st.nextToken());
int right = Integer.parseInt(st.nextToken());
int startPoint = Integer.parseInt(st.nextToken());
int leftToStart = startPoint - left;
int rightToStart = right - startPoint;
if (leftToStart < rightToStart){
index = leftToStart * 2 + 1;
}else {
index = 2 * rightToStart;
}
sb.append(index).append("\n");
}
System.out.println(sb.toString());
}
}
느낀점
왜 1번 풀이는 48점이고 2번 풀이는 100점일까?