N° Studio logoHarutoStudio
사용 가이드글Premium
대시보드
사용 가이드글Premium
블로그/APCS Oct 2023 - m370
  • #apcs

APCS Oct 2023 - m370

BlackInkBlackInk2025년 6월 19일 오전 08:00

APCS Oct 2023 - m370 Q1 [Java]

문제 설명:

n개의 위치에 먹이가 있고 쥐는 위치 x에서 시작합니다. 첫 줄에는 공백으로 구분된 정수 x와 n이 주어집니다. x는 쥐의 시작 위치, n은 먹이의 개수입니다. 둘째 줄에는 먹이 위치를 나타내는 정수 n개가 주어지며 쥐의 위치와 겹치지 않습니다. 모든 테스트에서 3 ≤ n ≤ 20이고 n은 홀수이며, 쥐와 먹이의 위치는 -100부터 100 사이입니다.

import java.util.Scanner;

public class rat {
    public static void main(String[] args) {
        try (Scanner scanner = new Scanner(System.in)) {
            String userinput = scanner.nextLine();
            String[] words = userinput.split(" ");
            int x = Integer.parseInt(words[0]);
            int n = Integer.parseInt(words[1]);
            String userinput2 = scanner.nextLine();
            String[] points = userinput2.split(" ");

            int fct = 0;
            int bct = 0;
            int[] font = new int[n];
            int[] back = new int[n];
            if (n >= 3 && n <= 20) {
                if (n % 2 != 0) {
                    for (int i = 0; i < n; i++) {
                        int px = Integer.parseInt(points[i]);
                        if (px <= 100 && px >= -100) {
                            if (px > x) {
                                font[fct] = px;
                                fct = fct + 1;
                            } else if (px < x) {
                                back[bct] = px;
                                bct = bct + 1;
                            }
                        } else {
                            break;
                        }
                    }
                    int num = x;
                    if (bct > fct) {
                        for (int i = 0; i < bct; i++) {
                            if (back[i] < num) {
                                num = back[i];
                            }
                        }
                        System.out.println(bct + " " + num);
                    } else if (bct < fct) {
                        for (int i = 0; i < fct; i++) {
                            if (num < font[i]) {
                                num = font[i];
                            }
                        }
                        System.out.println(fct + " " + num);
                    }

                }
            }

            scanner.close();
        } catch (Exception e) {
            System.out.print(e);
        }
    }
}

2023년 APCS 시험 문제입니다. 조건을 하나씩 넣는 단순한 방법으로 풀었습니다. 먹이가 쥐의 어느 쪽에 있는지 확인하면서 개수를 세고, 양쪽 개수를 비교한 뒤 해당 방향에서 쥐로부터 가장 먼 먹이 위치를 찾습니다.

핵심 개념:

  • java.util.Scanner는 Python의 input과 비슷하며 String userinput = scanner.nextLine();처럼 사용합니다.
  • 새 변수를 선언할 때 앞에 int나 String 같은 자료형을 써야 합니다.
  • split(" ");는 문자열을 나눕니다.
  • int x = Integer.parseInt(words[0]);는 String을 Int로 변환합니다.

[name=BlackInk7777] 제가 처음으로 Java로 작성한 프로그램입니다. APCS 시험에서는 Java로 쓰면 시간이 너무 걸려서 Python을 사용했습니다. Java로 작성하면서 시험 때 코드에 조건을 하나 빠뜨린 것도 발견했네요. QQ.

  • [✔️] 필요하면 코드를 그대로 사용해도 됩니다.
  • [✔️] 공유할 때 출처를 표시해 주세요.

실행 결과

이 글은 번체 중국어 원문을 AI로 번역했습니다. 의미나 표현에 차이가 있을 수 있으니 정확한 내용은 번체 중국어 원문을 기준으로 확인해 주세요.

HarutoStudio LogoHarutoStudio

HarutoStudio © 2023 - 2026

링크

  • 문서
  • 대시보드
  • 이용약관
  • 개인정보 처리방침
  • 환불 정책
  • 봇 상태

커뮤니티

  • Discord
  • Github
  • Instagram
  • top.gg

후원하기

  • Premium 요금제
  • 파트너