import java.util.Scanner;

public class MainClass {
    public static void main(String[] args) {
        /*
            Sorting : 정렬 -> 알고리즘
                      숫자의 크기에 따라서 순번대로 배치하는 처리
                      오름차순(작은수부터), 내림차순(큰수부터)
                      1 2 3 4 5           5 4 3 2 1
                      입사순위             월급순위
            종류 : 선택, 버블, 합병, 퀵 ...
         */

        /*
        int number[] = { 3, 2, 4, 1, 5 };
        int temp;   // swap

        for(int i = 0;i < number.length - 1; i++){  // 0 ~ 3

            for(int j = i + 1;j < number.length; j++){ // 1 ~ 4, 2 ~ 4, 3 ~ 4

                if(number[i] > number[j]){  // 오름
                    temp = number[i];
                    number[i] = number[j];
                    number[j] = temp;
                }
            }
        }

        for (int i = 0;i < number.length; i++){
            System.out.print(number[i] + "\t");
        }

        System.out.println();
        */


        // sorting
        Scanner sc = new Scanner(System.in);

        int number[] = null;
        int updown = 1;

        // input
        // 1.몇개를 정렬?
        System.out.print("정렬하고 싶은 숫자의 갯수 >> ");
        int count = sc.nextInt();

        // 배열을 설정
        number = new int[count];

        // 2.숫자의 갯수에 맞게 입력
        for(int i = 0;i < number.length; i++){
            System.out.print((i + 1) + "번째 수 = ");
            number[i] = sc.nextInt();
        }

        // 3.오름(1)/내림(2)
        System.out.print("오름(1), 내림(2) = ");
        updown = sc.nextInt();

        // process
        // 4.방법에 맞게 정렬
        int temp;
        for(int i = 0;i < number.length - 1; i++){
            for(int j = i + 1;j < number.length; j++){
                if(updown == 1){
                    if(number[i] > number[j]){   // 오름
                        temp = number[i];
                        number[i] = number[j];
                        number[j] = temp;
                    }
                }
                else{
                    if(number[i] < number[j]){   // 내름
                        temp = number[i];
                        number[i] = number[j];
                        number[j] = temp;
                    }
                }
            }
        }

        // print
        // 5.출력
        String message = "";
        if(updown == 1){
            message = "정렬방법은 오름 차순이고 데이터는 다음과 같습니다";
        }else{
            message = "정렬방법은 내림 차순이고 데이터는 다음과 같습니다";
        }

        System.out.println(message);
        for (int i = 0;i < number.length; i++){
            System.out.println("number[" + i + "] = " + number[i]);
        }
    }
}

 

import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class Lottery {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        /*
            로또 번호 생성기
            1. 몇 줄 생성할 것인지 입력 받으면
            2. 난수를 생성해서 배열에 저장하고
            3. 출력해줌
         */

        int[][] nums = null;

        while (true) {
            // 유저 입력으로 메뉴 선택
            System.out.println(":::::::::::::: 로또 번호 생성기 :::::::::::::::");
            System.out.println("[1] 생성하기\t\t\t[2] 나가기");
            System.out.print(">>> ");
            int user_input = sc.nextInt();

            // 생성 루틴
            if (user_input == 1) {
                // 생성할 줄 수 입력
                System.out.println("\n몇 줄 생성할까요? (ex. 5)");
                System.out.print(">>> ");
                user_input = sc.nextInt();

                // 배열 초기화
                nums = new int[user_input][6];

                // 난수 생성 후 배열에 저장
                for (int i=0; i<user_input; i++) {
                    Set<Integer> uniqueNumbers = new HashSet<>(); // 같은 줄에 있는 숫자끼리는 중복될 수 없어야 하므로 '집합'을 사용

                    while (uniqueNumbers.size() < 6) {
                        int r = (int)((Math.random() * 45) + 1);    // 0 ~ 44에서 랜덤값 +1 -> 1 ~ 45 뽑힘
                        uniqueNumbers.add(r);
                    }

                    // Set의 내용을 배열에 저장 (for each 문)
                    int index = 0;
                    for (int number : uniqueNumbers) {
                        nums[i][index++] = number;
                    }

                    // 오름차순 정렬
                    Arrays.sort(nums[i]);
                }

                // 결과 출력
                System.out.print("\n:::::::::: 오늘의 로또 번호 조합 :::::::::::\n");
                for (int i=0; i<user_input; i++) {
                    System.out.printf("%d번째 조합: ", i+1);
                    System.out.print(Arrays.toString(nums[i]));
                    System.out.print("\n");
                }
                System.out.print(":::::::::::::::: Good Luck! ::::::::::::::::\n\n");

                // 결과 출력 후 재시작 이전 확인
                System.out.println("계속하려면 아무 키나 누르세요.");
                System.out.print(">>> ");
                sc.nextLine(); // 입력 버퍼 비우기
                sc.nextLine(); // 사용자 입력 대기
                System.out.print("\n\n");

            } else if (user_input == 2){
                break;

            } else {
                System.out.println("정확한 숫자를 입력해주세요.\n");
            }
        }
        sc.close(); // Scanner 닫기
    }
}

(좌) 오름차순 정렬 / (우) 내림차순 정렬

 

import java.util.Arrays;
import java.util.Scanner;

public class Example1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // 1. 몇 개를 정렬?
        System.out.print("몇 개를 정렬하시겠습니까? ---> ");
        int size = sc.nextInt();

        // 결과를 저장할 배열 선언
        int[] nums = new int[size];
        
        // 2. 숫자의 갯수에 맞게 입력
        System.out.println("정렬하실 숫자를 입력해주십시오.");
        for (int i=0; i<size; i++) {
            System.out.printf("%d칸 중 %d개 입력중... --> ", size, i+1);
            nums[i] = sc.nextInt();
        }
        // 3. 오름/내림
        System.out.println("정렬 방식을 선택해주세요.");
        System.out.print("오름차순 (0) / 내림(1) --> ");
        int how = sc.nextInt();

        // 4. 방법에 맞게 정렬
        // 선택 정렬로, 오름차순 정렬
        if (how == 0) {
            for (int i = 0; i < nums.length; i++) {
                // 인덱스 처음에서부터 순차적으로 min 값 초기 할당
                int min_index = i;
                for (int j = i+1; j < nums.length; j++) {
                    // 전체를 검사하며 min_index 검사 후 초기화
                    if (nums[j] < nums[min_index]) {
                        min_index = j;
                    }
                }
                // 자리 이동 (Swap)
                int temp = nums[i];
                nums[i] = nums[min_index];
                nums[min_index] = temp;
            }
        } else if (how == 1) {
            for (int i = 0; i < nums.length; i++) {
                // 인덱스 처음에서부터 순차적으로 max 값 초기 할당
                int max_index = i;
                for (int j = i+1; j < nums.length; j++) {
                    // 전체를 검사하며 min_index 검사 후 초기화
                    if (nums[j] > nums[max_index]) {
                        max_index = j;
                    }
                }
                // 자리 이동 (Swap)
                int temp = nums[i];
                nums[i] = nums[max_index];
                nums[max_index] = temp;
            }
        }

        // 5. 결과 출력
        System.out.print(Arrays.toString(nums));
    }
}
import java.util.Arrays;
import java.util.Scanner;

public class sample2 {
    public static void main(String[] args) {
        /*
            break : 루프 탈출
                    단독으로 사용하지 못하고, 반드시 루프문과 같이 사용해야 함.

            continue :  생략 (Skip)
                        단독으로 사용하지 못하고, 반드시 루프문과 같이 사용해야 함.
                        loop문 안에 처리를 생략

            예시 ----
            for (int i=0; i<10; i++) {
                처리1
                처리2
                if (i == 6) {
                    continue;
                }
                처리3 // continue가 실행되면 처리3은 생략됨.
            }
         */

        // break;

        for (int i=0; i< 100; i++) {
            System.out.println(" i= " + i);
            if (i == 33) {
                System.out.println("탈출!");
                break;
            }
        }

        char[] array = { 'A', 'B', 'C', 'D', 'E'};

        for (int i=0; i<array.length; i++) {
            System.out.println(array[i]);
            if (array[i] == 'D') {
                System.out.println("탈출!");
                break;
            }
        }

        int arrNumber[] = { 3, 6, 8, -2, 9, 1 };
        for (int i=0; i<arrNumber.length; i++) {
            if (arrNumber[i] < 0) {
                break;
            } else {
                System.out.println(arrNumber[i]);
            }
        }
        // for each를 사용하는 경우
        for (int num: arrNumber) {
            if (num < 0) break;
            System.out.println(num);
        }

        // 2중 for문 탈출
        for (int i=0; i<5; i++) {
            System.out.println("i = " + i);
            for (int j=0; j<3; j++) {
                System.out.println("\tj = "+ j);
                if (i == 3 && j == 1) {
                    break;  // break 하나 당 루프 한 개만 중단시킬 수 있다!!.
                }
            }
        }

        // 1. 같은 조건을 두 번 작성
        for (int i=0; i<3; i++) {
            System.out.println("i = " + i);
            for (int j=0; j<3; j++) {
                System.out.println("\tj = "+ j);
                if (i == 3 && j == 1) {
                    break;  // break 하나 당 루프 한 개만 중단시킬 수 있다!!.
                }
            }
        }

        // 2. break 구문에 탈출 루프를 지정 (권장! 'out'은 그냥 아무 단어로 대체 가능!)
        out: for (int i=0; i<5; i++) {
            System.out.println("i = " + i);
            for (int j=0; j<3; j++) {
                System.out.println("\tj = " + j);
                if (i== 3 && j == 1) {
                    break out;
                }
            }
        }

        // continue문
        for (int i=0; i< 10; i++) {
            System.out.println("start i = " + i);

            if (i == 6) {
                continue;
            }
            // if 조건문에 맞으면 아래줄은 실행되지 않음
            System.out.println("\tend i =" + i);
        }

        // 숫자를 5개 받는다. 입력 받는 숫자는 모두 양수 조건.
        // 만약 음수를 입력했으면 다시 입력하라는 메시지 함께 다시 입력 받기
        // 배열에 입력받도록 한다

        System.out.println("========입력 프로그램========");
        Scanner sc = new Scanner(System.in);
        int[] nums = new int[5];
        int cnt = 0;
        while (cnt < 5) {
            System.out.printf("%d번째 수 입력 ---> ", cnt+1);
            int temp = sc.nextInt();
            if (temp < 0) {
                System.out.println("음수를 입력하셨습니다. 다시 입력해주세요");
                continue;
            }
            nums[cnt] = temp;
//            System.out.println("\t 입력한 숫자: "+ nums[cnt]);
            cnt++;
        }

        System.out.println(Arrays.toString(nums));
    }
}
public class MainClass {
    public static void main(String[] args) {
        /*
            while : 순환문
            do - while (참고로만 알아둘 것)

            형식:
                    변수선언 <- loop용 변수 int i
                    변수 초기화
                    while (조건) {
                        처리
                        연산식
                    }

                    변수선언 <- loop용 변수 int i
                    변수 초기화
                    do {
                        처리
                        연산식
                    } while (조건);
                    -> 조건이 안 맞아도 최소 1번은 실행된다.
         */
        int w;
        w = 0;

        while ( w < 10) {
            System.out.println("w = " + w);
            w++;
        }

//        // 무한루프
//        w = 0;
//        while (w >=0) {
//            System.out.println("w = " + w);
//            w++;
//        }

        // 무한루프 탈출: break
        w = 0;
        while (true) {
            System.out.println("w = " + w);
            if ( w == 100)  break;
            w++;
        }


        // 이중 while문
        int w1, w2;
        w1 = 0;

        while (w1 < 5) {
            System.out.println(" w1 = " + w1);
            w2 = 0;
            while (w2 < 3) {
                System.out.println("\t w2 = " + w2);
                w2++;
            }
            w1++;
        }


        // do while문
        int w3;
        w3 = 10;
        do {
            System.out.println("w3 = " + w3);
            w3++;
        } while (w3 < 10);
    }
}
public class session5 {
    public static void main(String[] args) {
        /*
            for문: 반복문, 순환문, loop문
                    지정한 횟수만큼 반복 처리하는 제어문

            형식 :
                for( 초기화 ; 조건식 ; 연산식 ) {
                    처리
                }
            for ( 초기화(1) ; 조건식 (2)(5)(8) ; 연산식(4)(7)(10) ) {
                처리(3)(6)(9)
            }
            조건 3번 맞아서 처리 3번하고 4번째에 탈출
         */

        // sum 하는 방법 (1)
        int sum = 0;
        for (int i=1; i<=10; i++) {
            sum += i;
        }
        System.out.println("sum =" + sum);

        // sum 하는 방법 (2)
        sum = 0;
        int cnt = 1;
        for (int i=0; i<10; i++)  {
            sum = sum + cnt;
            cnt++;
        }
        System.out.println("sum =" + sum);

        // 1 ~100 사이의 숫자 중에 짝수만을 출력
/*        for (int i=1; i<=100; i++) {
            if (i%2 == 0) {
                System.out.println(i);
            }
        }*/

        // for + array
        // int[] array = { 11, 22, 33, 44, 55};
        int[] array = { 11, -22, 33, -44, 55};
        for (int i=0; i<5; i++) {
//            if (array[i] % 2 == 0)
//                System.out.println(array[i]);
            if (array[i] > 0) {
                System.out.println(array[i]);
            }
        }

        String[] name = {"홍길동", "성춘향", "일지매"};


        // for each -> array, collection(list)
        for (String s : name) {         // s = "홍길동" , ...
            System.out.println(s);
        }

        // for + if + array
        int[] arrCount = { 90, 85, 95, 75, 80 };

        // 최고점수, 최저점수
        int max = Integer.MIN_VALUE; // 또는 arrCount[0] 사용 가능
        int min = Integer.MAX_VALUE;
        for (int i=0; i<arrCount.length; i++) {
            if (max < arrCount[i]) {
                max = arrCount[i];
            }
            if (min > arrCount[i]) {
                min = arrCount[i];
            }
        }
        System.out.println("최고점수: " + max);
        System.out.println("최저점수: " + min);

        // for 문 안에 for 문
        for (int i=0; i<5; i++) {
            System.out.println("i =" + i);
            for (int j=0; j<3; j++) {
                System.out.println("\tj = " + j);
            }
        }

        // 구구단
        for (int i=1 ; i< 10; i++) {
            for (int j= 1; j <10; j++) {
                System.out.print( i + "X" + j + "=" + i*j + " ");
            }
            System.out.println();
        }
    }
}

+ Recent posts