백준 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);
	}
}
  1. 구글링하여 답 코드를 참고해보니 중복되는 숫자에 대한 코드는 따로 없었다. 아마도 백준 문제에서 '수는 중복되지 않는다'라고 명시를 했는데, 이 부분이 애초에 사용자로부터 중복되는 숫자를 적지 말라는 뜻이었던 것 같다.
  2. 전반적인 맥락은 크게 다르지 않다.
    향상된 for문을 썼는데 향상된 for문은 왼쪽에 for문 변수명을 적어주고 오른쪽에는 배열명을 적어준다. arr 배열에 대한 값들이 출력된다.
  3. 결국 모든 값을 사용자한테 입력을 받는 것이다.
    5 > 숫자의 개수
    1 2 3 4 5 > 5개에 대한 숫자 값들 5개
    1
    2
    3
    4
    5
    이런식으로 오름차순이 출력되는 것이다.

괜히 꼬아서 생각한 문제가 아닌가 싶었다.
그리고 Array() 말고도 다른 버블정렬이나 삽입정렬 등 사용해서 정렬하는 예제를 많이 봤는데 나중에 기회가 된다면 한 번 도전해봐야 겠다.

좋은 웹페이지 즐겨찾기