ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 100제 Part.4 / 1 ~ 7
    개발자 수업/인터넷 강의 2021. 9. 23. 01:47

    1. 정수로 이루어진 배열에서 가장 큰 값을 구하는 최댓값 알고리즘 구현

    public class Java100_algorithm_MaxAlgorithm{
    	public static void main(String[] args){
        	// 배열 선언
            int[] ar = {4, 13, 15, 17, -2};
            
            // max, min 함수
            System.out.println(Math.max(10,4));	// 10
            System.out.println(Math.min(10,4));	// 4
            
            // 일단 배열 내 첫 번째 원소의 값이 제일 크다고 가정하고 초기화
            //int max = Integer.MIN_VALUE;
            int max = ar[0];
            
            // 반복문 돌면서 비교하여 출력
            System.out.println("현재 배열 내 가장 큰 값은: " + max);	// 4
            
            for(int i=1; i<ar.length; i++){
            	if(max<ar[i]){
                	max = ar[i];
                }
            }
            System.out.println("현재 배열 내 가장 큰 값은: " + max);	// 17
        }
    }

     

     

    2. 정수로 이루어진 배열에서 가장 작은 값을 구하는 최솟값 알고리즘 

    public class Java100_algorithm_MinAlgorithm{
    	public static void main(String[] args){
            int ar = {4, 13, 150, 17, -2}
            int min = ar[0];
    
            for(i=1; i<ar.length; i++){
              if(min>ar[i]){
              min = ar[i];
              }
            }
            System.out.println("현재 배열 내 가장 작은 값은 : " + min);
          }
    }

     

     

    3. 랜덤으로 정수 10개의 값을 갖는 배열을 만들어 최댓값과 최솟값을 같이 출력 

    public class Java100_algorithm_MaxMin{
    	public static void main(String[] args){
        	// 정수 배열 선언
            int[] ar = new int[10];
            
            // 반복문 돌면서 랜덤으로 10개의 정수 값을 세팅 -> Math.random()
            for(int i=0; i<ar.length; i++){
            	ar[i] = (int)(Math.random() * 10);
                System.out.print(ar[i]+" ");
            }
            
            // 최댓값과 최솟값 변수 초기화
            int max = ar[0], min = ar[0];
            
            // 반복문을 돌면서 최댓값, 최솟값 비교
            for(int i=0; i<ar.length; i++){
                if(max<ar[i]){
                	max = ar[i];
                }
                if(min>ar[i]){
                	min = ar[i];
                }
            }
        }
    }

     

     

    4. 정렬 함수를 이용하여 학생들의 성적을 꼴찌부터 1등까지 순위대로 출력 (오름차순 정렬)

    import java.util.Arrays;
    
    public class Java100_algorithm_SortAlgorithmWithMethod{
    	public static void main(String[] args){
    		// 배열 선언 -> 성적 배열
            int[] scores = {88, 55, 39, 100, 90, 100, 98, 67};
            
            // 성적 배열 -> 오름차순 정렬(기본) -> Arrays.sort(배열명); -> import 필요
            // 클래스 메서드로써 Arrays 클래스의 인스턴스 생성 없이 바로 사용 가능
            System.out.println("정렬 들어가기 전 =");	// 88 55 39 100 90 100 98 67
            for(int i=0; i<scores.length; i++){
            	System.out.print(scores[i]+" ");
            }
            
            Arrays.sort(scores);
            
            System.out.println("정렬 들어간 후 =");	// 39 55 67 88 90 98 100 100
            for(int i=0; i<scores.length; i++){
                System.out.print(scores[i] + " ");
            }
            
            // 향상된 for문 사용
            System.out.println("정렬 들어간 후 =")
            for(int i:scores)
            	System.out.print(i+" ");
    	}
    }

     

     

    5. 정렬 함수를 이용하여 학생들의 성적을 1등부터 꼴찌까지 순위대로 출력

    import java.util.Arrays;
    import java.util.Collections;
    
    public class Java100_algorithm_SortAlgorithmWithMethod2{
    	public static void main(String[] args){
        	// 배열 선언 -> 성적 배열
            // 이 때, 내림차순이거나 원하는대로 정렬의 조건을 설정해서 하고자 할 때 -> 기본형(Primitive Type)의 배열에는 적용 안 됨
            // 따라서, 래퍼 클래스로 만들어서 적용
            // 참고로 String 타입은 기본형 아님
            Integer[] scores = {88, 55, 33, 100, 90, 99, 77, 66};
            
            // 성적 배열 -> 내림차순 정렬 -> Arrays.sort(); -> import와 추가 옵션 설정 필요 -> (배열명, 컬렉션 reverseOrder)
            // Collections 클래스의 reverseOrder() 메서드 사용 -> import 필요
            System.out.print("정렬 전 = ");
            for(int i=0; i<scores.length; i++){
            	System.out.print(scores[i]+" ");
            }
            
            // 내림차순 정렬
            Arrays.sort(scores,Collections.reverseOrder());
            
            System.out.print("정렬 후 = ");
            for(int i=0, i<scores.length; i++){
            	System.out.print(scores[i]+" ");
            }
            
            // 향상된 for문
            System.out.print("정렬 후 = ");
            for(int i:scores){
            	System.out.print(i+" ");
            }
        }
    }

     

     

    6. 학생들의 성적을 1등부터 순위를 매겨서 출력

    public class Java100_algorithm_RankAlgorithm{
    	public static void main(String[] args){
        	// 배열 선언 -> 성적 배열, 랭킹 배열
            int[] scores = {88, 50, 38, 100, 90, 100, 99, 75};
            int s_len = scores.length;
            int[] ranking = new int[s_len];
            
            // 반복문 돌면서 랭킹 처리
            for(int i=0; i<s_len; i++){
            	// 랭킹 초기화 -> 일단 전부 1등으로 초기화
                ranking[i] = 1;
                
                // 중첩 반복문
                for(int j=0; j<s_len; j++){
                	if(scores[i]<scores[j]){
                    	ranking[i]++;
                    }
                }
            }
            
            // 출력
            System.out.print(ranking[0]);	// 88점 -> 5
            System.out.print(ranking[1]);	// 50점 -> 7
            
        }
    }

     

     

    7. 학생들의 성적을 1등부터 순위를 매겨서 출력 (오름차순 정렬)

    import java.util.Arrays;
    
    public class Java100_algorithm_RankAlgorithm2{
    
    	public static void printRanking(int[]scores, int[]ranking){
        	// 배열 길이
            int scores_len = scores.length;
            int ranking_len = scores_len;
            System.out.println(scores_len);	// 8
            
            System.out.println("총 "+scores_len+"명 학생의 성적과 등수는?");
            for(int i=0; i<scores_len; i++){
            	System.out.print(scores[i] +" 점 -> "+ ranking[i] + "등 ");
            }
            System.out.println();
        }
    
    	public static void main(String[] args){
        	// 배열 선언 -> 성적 배열, 랭킹 배열
            int[] scores = {88, 50, 38, 100, 90, 100, 99, 75};
            int s_len = scores.length;
            int[] ranking = new int[s_len];
            
            // 오름차순 배열 정렬
            Arrays.sort(scores);
            
            // 반복문 돌면서 랭킹 처리
            for(int i=0; i<s_len; i++){
            	// 랭킹 초기화 -> 일단 전부 1등으로 초기화
                ranking[i] = 1;
                
                // 중첩 반복문
                for(int j=0; j<s_len; j++){
                	if(scores[i]<scores[j]){
                    	ranking[i]++;
                    }
                }
            }
            
            // 출력 -> 별도의 메서드 호출
            printRanking(scores, ranking);
        }
    }

     

     

     

     

     

     

     

    '개발자 수업 > 인터넷 강의' 카테고리의 다른 글

    자바 100제 Part.4 / 14 ~ 19  (0) 2021.09.27
    자바 100제 Part.4 / 8 ~ 13  (0) 2021.09.27
    자바 100제 Part.3 / 24 ~ 28  (0) 2021.09.22
    자바 100제 Part.3 / 14 ~ 23  (0) 2021.09.18
    자바 100제 Part.3 / 5 ~ 13  (0) 2021.09.17

    댓글