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