코딩/2-JAVA

C0804석차 , C0805그룹바이 , C0806규칙찾기

tree0505 2025. 6. 24. 16:50
반응형
    • C0804석차

  • C0804개념01_석차출력
package C0804석차;

public class C0804개념01_석차출력 {
	public static void main(String[] args) {
		
	    /*
	        [문제]
	            scoreList는 학생시험점수배열이다. 
	            석차를 출력하시오.
	        [정답]
	            2 3 4 1 
	    */

	    int[] scoreList = {87,   42,   11,   98};

	    int size = scoreList.length;
	    for(int i=0; i<size; i++) {
	        int count = 1;
	        for(int j=0; j<size; j++) {
	            if(scoreList[i] < scoreList[j]) {
	                count += 1;
	            }
	        }
	        System.out.print(count + " ");
	    }

	}
}

  • C0805그룹바이 . 집계 
    • 종류별로 한개씩 모으는것 

  • C0805개념01_그룹바이
package C0804석차;

public class C0804개념01_석차출력 {
	public static void main(String[] args) {
		
	    /*
	        [문제]
	            scoreList는 학생시험점수배열이다. 
	            석차를 출력하시오.
	        [정답]
	            2 3 4 1 
	    */

	    int[] scoreList = {87,   42,   11,   98};

	    int size = scoreList.length;
	    for(int i=0; i<size; i++) {
	        int count = 1;
	        for(int j=0; j<size; j++) {
	            if(scoreList[i] < scoreList[j]) {
	                count += 1;
	            }
	        }
	        System.out.print(count + " ");
	    }

	}
}

  • C0806규칙찾기

  • C0806개념01_숫자야구
package C0804석차;

public class C0804개념01_석차출력 {
	public static void main(String[] args) {
		
	    /*
	        [문제]
	            scoreList는 학생시험점수배열이다. 
	            석차를 출력하시오.
	        [정답]
	            2 3 4 1 
	    */

	    int[] scoreList = {87,   42,   11,   98};

	    int size = scoreList.length;
	    for(int i=0; i<size; i++) {
	        int count = 1;
	        for(int j=0; j<size; j++) {
	            if(scoreList[i] < scoreList[j]) {
	                count += 1;
	            }
	        }
	        System.out.print(count + " ");
	    }

	}
}

  • C0806개념02_같은수합치기
package C0806규칙찾기;


import java.util.Arrays;

/*
	[문제]
		input배열의 데이터를 순차적으로 arr에 저장하는데,
		만약 저장하려는 수와 그 앞의 수가 서로 같으면 합친다. (계속 중첩 적용)
		마지막 arr의 값을 출력하시오.
			8 :: arr = {8}
			4 :: arr = {8, 4}
			2 :: arr = {8, 4, 2}
			2 :: arr = {8, 4, 4} => {8, 8} => {16}  
			4 :: arr = {16, 4}
			4 :: arr = {16, 8}  
			8 :: arr = {16, 16} => {32}
	[정답]
		arr = {32, 0, 0, 0, 0, 0, 0}
*/

public class C0806개념02_같은수합치기 {
	public static void main(String[] args) {
		
		int[] input = {8, 4, 2, 2, 4, 4, 8};
		int[] arr = new int[input.length];
		
		/*
			arr = [16, 0, 0, 0, 0, 0, 0]
			
			index = 0, i = 1
				arr[0] == input[1]	false
				index = 1
				arr[1] = input[1]
			index = 1, i = 2
				arr[1] == input[2]	false
				index = 2
				arr[2] = input[2]
			index = 2, i = 3
				arr[2] == input[3]	true
				arr[2] = 4
				arr[2] != arr[1]	false
				arr[2] = 0
				index = 1
				arr[1] = arr[1] * 2
				
				arr[1] != arr[0]	false
				arr[1] = 0
				index = 0
				arr[0] = arr[0] * 2
			...
		 */
		
		int index = 0;
		arr[index] = input[0];
		
		
		for(int i=1; i<input.length; i++) {
			System.out.println(Arrays.toString(arr));
			
			if(arr[index] == input[i]) {
				arr[index] = arr[index] * 2;
				
				while(true) {
					if(index == 0) {
						break;
					} else if(arr[index] != arr[index - 1]) {
						break;
					} else {
						System.out.println(Arrays.toString(arr));
						arr[index] = 0;
						index -= 1;
						arr[index] = arr[index] * 2;
					}
				}
				
			} else {
				index += 1;
				arr[index] = input[i];
			}
		}
		System.out.println(Arrays.toString(arr));
		
		
	}
}

 

반응형