[백준/JAVA] 32068번 보물 찾기

정은아·2024년 11월 15일

[알고리즘] 수학 모음

목록 보기
130/152
post-thumbnail

문제

내 풀이 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점일까?

profile
꾸준함의 가치를 믿는 개발자

0개의 댓글