강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

이신성님의 프로필 이미지
이신성

작성한 질문수

백준 22988번 문제

작성

·

25

·

수정됨

0

package com.lee.blog;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int N = Integer.parseInt(st.nextToken());
        long X = Long.parseLong(st.nextToken());

        long[] arr = new long[N];

        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < N; i++) {
         arr[i] = Long.parseLong(st.nextToken());
        }

        Arrays.sort(arr);

        int start = 0;
        int end = N - 1;

        int count = 0;
        int remain = 0;

        while (start < end) {

            if (arr[end] == X) {
                end--;
                remain++;
                continue;
            }

            if (arr[start] + arr[end] >= X / 2 + 1) {
                start++;
                end--;
                count++;
            } else {
                start++;
            }
        }

        remain += N - (count * 2 + remain);
        System.out.println(count + remain / 3);
    }
}

이렇게 작성했는데 어느 부분에서 틀린걸까요 ㅠㅠ?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

이신성님, 백준 22988번 문제를 해결하려 하신 코드에서 몇 가지 검토해보면 좋을 부분이 있습니다. 다음을 확인해보세요:

  1. 배열의 정렬 및 접근: 현재 arr[start]arr[end] 요소를 사용하여 합을 구하고 있습니다. 문제에 따라 다를 수 있지만, arr[start] + arr[end]X를 넘는 경우에도 처리 로직이 추가될 수 있습니다. 또한 arr[end] == X로 조건을 체크하고 있는데, Xarr[end] 값과 비교한 후 continue로 반복문을 빠져나오기 전에 다른 조건들을 더 확인할 필요가 있습니다.

  2. 분기 로직: X / 2 + 1로 부분적으로 나누고 있는데, 이 조건이 문제의 핵심 조건에 충실한지 확인해보세요. 문제에서 요구하는 조건이 무엇인지 명확히 파악하시고, 그에 맞도록 로직을 조정하는 것이 필요합니다.

  3. 결과 계산: 최종적으로 count + remain / 3이라는 결과 값을 반환하고인데, 몫 연산을 의도하신 것인지 확인해 보세요. remain 값을 3으로 나눈 결과가 정확한지, 다른 계산이 필요한지 확인이 필요합니다.

  4. 전체합로직: remain += N - (count * 2 + remain); 부분의 역할을 정확히 이해하고 있는지 점검하고, 이 부분이 필요한지 다시 한번 확인하세요.

필요시 문제의 상세 요구사항을 다시 읽고, 위의 내용을 고려하며 코드를 수정해보시는 것을 추천드립니다! 코드를 디버깅하며 변수의 값 변화를 추적해보는 것도 도움이 될 것입니다. 또한, 경우에 따라 다른 솔루션 방법론을 생각해보시는 것도 경험을 늘리는 좋은 방법이 될 수 있습니다. 필요한 경우 온라인 저지 및 스니펫 코드 분석기를 사용하여 코드를 테스트하는 게 도움이 될 수 있습니다.

응원합니다! 🔥

이신성님의 프로필 이미지
이신성

작성한 질문수

질문하기