백준 2750 JAVA
문제
(출처: 백준 홈페이지)
수정 전 코드
package AlgorithmPkg;
import java.util.Arrays;
import java.util.Scanner;
public class b2750 {
public static void main(String[] args) {
// 내 사고과: 배열 안에서 사용자가 입력한 수 만큼의 값이 나오고 그 뒤에 오름차순
int[] size = new int[1000];
//배열을 선언하고 Scanner로 사용자로부터 값을 입력받는다..?
Scanner sc = new Scanner(System.in);
int num =sc.nextInt();
Arrays.sort(); // 값들 오름차순 정렬, sort()는 int가 아닌 배열에만 적용된다.
// num으로 할 때는 오류가 발생하는데 배열 size로 하면 오류가 발생하지 않는다.
for(int i:num) {
System.out.println("[+i+]");
}
// 중복 제거 (if문 활용)
}
}
[ 내가 구현하지 못했던 점 ]
1. 정확히 배열과 Scanner을 어느 때에 적재적소에 배치해야 하는지 잘 모르는 듯 했다.
2. sort() 메소드도 java.util.sort()에 있는 것임을 까먹고 있었다.
3. 중복을 제거한다고 하는데 어떤 식으로 중복을 제거해야 하는지 구현 방법을 알지 못했다.
수정 후 코드
package AlgorithmPkg;
import java.util.Arrays;
import java.util.Scanner;
public class b2750 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[] arr = new int[N]; // 사용자가 입력한 값을 배열의 크기로 설정
for(int i=0; i<N; i++) {
arr[i]=sc.nextInt();
}
Arrays.sort(arr);
for(int i : arr)
System.out.println(i);
}
}
- 구글링하여 답 코드를 참고해보니 중복되는 숫자에 대한 코드는 따로 없었다. 아마도 백준 문제에서 '수는 중복되지 않는다'라고 명시를 했는데, 이 부분이 애초에 사용자로부터 중복되는 숫자를 적지 말라는 뜻이었던 것 같다.
- 전반적인 맥락은 크게 다르지 않다.
향상된 for문을 썼는데 향상된 for문은 왼쪽에 for문 변수명을 적어주고 오른쪽에는 배열명을 적어준다. arr 배열에 대한 값들이 출력된다. - 결국 모든 값을 사용자한테 입력을 받는 것이다.
5 > 숫자의 개수
1 2 3 4 5 > 5개에 대한 숫자 값들 5개
1
2
3
4
5
이런식으로 오름차순이 출력되는 것이다.
괜히 꼬아서 생각한 문제가 아닌가 싶었다.
그리고 Array() 말고도 다른 버블정렬이나 삽입정렬 등 사용해서 정렬하는 예제를 많이 봤는데 나중에 기회가 된다면 한 번 도전해봐야 겠다.
Author And Source
이 문제에 관하여(백준 2750 JAVA), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@brandy_kim/백준-2750-JAVA저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)