▶ SWEA_2063(중간값 찾기)
[제출 코드]
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int count = sc.nextInt();
sc.nextLine();
ArrayList<Integer> ar = new ArrayList<Integer>(count);
String num = sc.nextLine();
String [] result = num.split(" ");
for(int i=0; i < result.length; i++) {
//System.out.println(result[i]);
//Integer.parseInt(result[i]);
ar.add(Integer.parseInt(result[i]));
}
Collections.sort(ar);
for (int i=0; i < ar.size();i++) {
if (i == ar.size() / 2) {
System.out.println(ar.get(i));
}
}
}
- 문제를 제대로 읽기 : 입력값을 두 번 받음
- list 배열의 크기 지정
- 공백을 split을 기반으로 나눈후 숫자형으로 변환
- 중간값 확인을 위해 전체의 / 2를 진행
[next와 nextLine이해하기]
next() | nextLine() |
|
|
[공백으로 발생할 수 있는 문제_nextInt]
import java.util.Scanner;
public class NextIntNextLineExample {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter an integer:");
int number = sc.nextInt(); // 정수 읽기
sc.nextLine(); // 버퍼 비우기
System.out.println("Enter a sentence:");
String sentence = sc.nextLine(); // 한 줄 전체 읽기
System.out.println("Number: " + number);
System.out.println("Sentence: " + sentence);
}
}
※ 공백 문제: nextInt() 등과 같이 다른 next 메서드와 nextLine()을 함께 사용할 때,
중간에 남아 있는 줄바꿈 문자를 처리하기 위해 sc.nextLine()을 호출하여 버퍼를 비워야 함
※ Scanner 클래스에서 입력을 처리할 때, 버퍼를 비워야 하는 이유는 nextInt(), next(), nextDouble() 등의 메서드가
입력 버퍼에서 공백 문자(공백, 탭, 줄바꿈 등)를 남기기 때문
'숫자만 읽어오는 등'의 문제로 인해 다음 입력을 받을 때 예상치 못한 결과가 발생할 수 있음
[초기 코드]
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
List<Integer> ar = new ArrayList<Integer>();
String num = sc.nextLine();
String [] numAr = num.split(" ");
for(int i =0; i<numAr.length;i++) {
ar.add(Integer.parseInt(numAr[i]));
}
Collections.sort(ar);
if (ar.size() % 2 != 0) {
for(int i=0; i<ar.size();i++) {
if(i == (ar.size() / 2)) {
System.out.println(ar.get(i));
}
}
}
}
- 입력값을 받아오지 않는 문제 발생
728x90
'알고리즘' 카테고리의 다른 글
[JAVA] 백준 알고리즘_5597(과제 안 내신 분)*** (0) | 2024.07.01 |
---|---|
[JAVA] 백준 알고리즘_2525(오븐 시계)* (2) | 2024.06.24 |
[JAVA] 백준 알고리즘_14681(사분면 고르기) (0) | 2024.06.23 |
[JAVA] 백준 알고리즘_2753(윤달) (0) | 2024.06.22 |
[JAVA] 백준 알고리즘_2588(곱셈) (0) | 2024.06.22 |