Backend/JAVA

[JAVA] 특강 15일차 : 코딩 훈련! 문제 풀이 (반복문 & 배열)

JOKUN 2022. 7. 10. 15:15

 

 

LoopControl

하나의 클래스에 메소드로 정의하여 메소드 호출하여 실행

📑문제

method1

어제 별 찍기 다른방법으로 풀이한 것

 

method2

 

 

 

Array 배열

하나의 클래스에 메소드로 정의하여 메소드 호출하여 실행

📑문제

method3

 

method4

 

method5

 

method6

 

method7

 

method8

 

method9

 

method10

 

method11

 

method12

 

method13

 

method14

 

method15

 

 

 

 

🔍풀이

import java.util.*;

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

//        method1();
//        method2();
//        method3();
//        method4();
//        method5();
//        method6();
//        method7();
//        method8();
//        method9();
//        method10();
//        method11();
//        method12();
//        method13();
//        method14();
        method15(); 

    }

    //반복문
    private static void method1(){
        System.out.print("정수 : ");
        int num = sc.nextInt();

        int cnt = 0;
        for (int i = 1; i < num*2; i++) {
            if(i > num){
                cnt--;
            }else{
                cnt++;
            }
            for (int j = 0; j < cnt; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
    private static void method2() {
        System.out.print("당신의 이름을 입력해주세요 : ");
        String userName = sc.nextLine();


        int win = 0,draw = 0 ,fail = 0;
        //가위(1) 바위(2) 보(3)
        Random ran = new Random();

        while(true){
            System.out.print("가위바위보 : ");
            String rps = sc.nextLine();

            if(rps.equals("가위") || rps.equals("바위") || rps.equals("보")){
            }else{
                if(rps.equals("exit")){
                    System.out.println(userName +"님의 가위바위보 게임이 종료되었습니다.");
                    System.out.println((win+draw+fail) + "전 " + win +"승 " + draw + "무 " + fail + "패");
                    break;
                }
                System.out.println("잘못 입력하셨습니다.");
                continue;
            }


            int user = -1;
            switch (rps){
                case "가위" :
                    user = 1;
                    break;
                case "바위" :
                    user = 2;
                    break;
                case "보" :
                    user = 3;
                    break;
            }

            int com = ran.nextInt(3)+1;
            if (com == user){ // 무승부
                System.out.println("비겼습니다.");
                draw++;
            } else { // 승리 or 패배
                if ( (com == 1 && user == 2)
                     ||(com == 2 && user == 3)
                        ||(com == 3 && user ==1)){ //승리
                    System.out.println("이겼습니다!");
                    win++;
                }else{ //패배
                    System.out.println("졌습니다ㅠㅠ");
                    fail++;
                }

            }
        }
    }

    //배열
    private static void method3() {
        int[] intArray = new int[10];
        int cnt = 1;
        for (int i = 0; i < 10; i++) {
            intArray[i] = cnt++;
            System.out.print(intArray[i] + " ");
        }
    }
    private static void method4() {
        int[] intArray = new int[10];
        int cnt = 10;
        for (int i = 0; i < 10; i++) {
            intArray[i] = cnt--;
            System.out.print(intArray[i] + " ");
        }
    }
    private static void method5() {
        System.out.println("양의 정수 : ");
        int num = sc.nextInt();
        int[] intArray = new int[num];
        int cnt = 1;
        for (int i = 0; i < num; i++) {
            intArray[i] = cnt++;
            System.out.print(intArray[i] + " ");
        }
    }
    private static void method6() {
        String[] fruit = new String[5];
        fruit[0] = "사과";
        fruit[1] = "귤";
        fruit[2] = "포도";
        fruit[3] = "복숭아";
        fruit[4] = "참외";

        System.out.print(fruit[1]);
    }
    private static void method7() {
        System.out.print("문자열 : ");
        String str1 = sc.nextLine();
        System.out.print("문자 : ");
        char str2 = sc.nextLine().charAt(0);

        char[] ChArray = str1.toCharArray();
        String findIndex = "";
        int idx = 0;
        int findCh = 0;
        for (char ch : ChArray
             ) { if(ch == str2){
                 findCh++;
                 findIndex += idx + " ";
        }
            idx++;
        }

        System.out.println(str1 + "에 " + str2 + "가 존재하는 위치(인덱스) : " + findIndex);
        System.out.println(str2 + " 개수 : " + findCh);
    }
    private static void method8() {
        System.out.print("0 ~ 6 사이 숫자 입력 : ");
        int num = sc.nextInt();
        if(0 < num && num <= 6){
        String[] strArray = {"월", "화", "수", "목", "금", "토", "일", };
            System.out.println(strArray[num]+ "요일");
        }else {
            System.out.println("잘못 입력했습니다.");
        }
    }
    private static void method9() {
        System.out.print("정수 : ");
        int num = sc.nextInt();

        int[] numArray = new int[num];

        for (int i = 0; i < num; i++) {
            System.out.print("배열" + i + "번째 인덱스에 넣을 값 : ");
            int nextNum = sc.nextInt();
            numArray[i] = nextNum;
        }
        int total = 0;
        for (int i : numArray
             ) {
            System.out.print(i + " ");
            total += i;
        }
        System.out.println();
        System.out.println("총 합 : " + total);
    }
    private static void method10() {
        System.out.print("정수 : ");
        int num = sc.nextInt();

        if (num < 3 || num % 2 == 0){
            System.out.println("다시 입력하세요.");
            method10(); //재귀
        }

        int cnt = 0;
        for (int i = 1; i <= num; i++) {
            if(i <= (num/2) + 1) {
                System.out.print(++cnt);
            }else{
                System.out.print(--cnt);
            }

            if ( i != num){
            System.out.print(", ");
            }
        }
    }
    private static void method11() {
        System.out.print("치킨 이름을 입력하세요 : ");
        String ck = sc.nextLine();

        String[] ckMenu = {"양념", "간장", "파닭", "호랑이", "뿌링클"};

        int findIndex = -1;
        for (int i = 0; i < ckMenu.length; i++) {
            if(ckMenu[i].equals(ck)){
                findIndex = i;
            }
        }
        if(findIndex == -1){
            System.out.println(ck + "치킨은 없는 메뉴입니다.");
        }else{
            System.out.println(ck + "치킨 배달 가능");
        }
    }

    private static void method12() {
        System.out.print("주민등록번호(-포함) : ");
        String jumin = sc.nextLine();

        if(jumin.matches("\\d{6}\\-[1-4]\\d{6}")){
            char[] chArray = jumin.toCharArray();
            int findIndex = jumin.indexOf("-");
            findIndex++;
            for (int i = 0; i < chArray.length; i++) {
                if(i > findIndex){
                    System.out.print("*");
                }else{
                    System.out.print(chArray[i]);

                }
            }
        }else {
            System.out.println("올바른 주민등록번호가 아닙니다.");
        }

    }
    private static void method13() {
        int[] intArray = new int[10];
        for (int i = 0; i < intArray.length; i++) {
        intArray[i] = new Random().nextInt(10)+1;
        }
        Arrays.stream(intArray).forEach(e->{
            System.out.print(e + " ");
        });
    }
    private static void method14() {
        int[] intArray = new int[10];
        for (int i = 0; i < intArray.length; i++) {
            intArray[i] = new Random().nextInt(10)+1;
        }
        int max = Integer.MAX_VALUE;
        int min = Integer.MIN_VALUE;
        max = Arrays.stream(intArray).max().getAsInt();
        min = Arrays.stream(intArray).min().getAsInt();
        Arrays.stream(intArray).forEach(e->{
            System.out.print(e + " ");
        });
        System.out.println();
        System.out.println("최대값 : " + max);
        System.out.println("최소값 : " + min);
    }
    private static void method15() {
        // 첫 번째 방법
        int[] intArray = new int[10];
        for (int i = 0; i < intArray.length; i++) {
            intArray[i] = new Random().nextInt(10)+1;
            for (int j = 0; j < i; j++) {
                if(intArray[i] == intArray[j]){
                    i--;
                    break;
                }
            }
        }
        Arrays.stream(intArray).forEach(e->{
            System.out.print(e + " ");
        });


        // 두 번째 방법
        Set<Integer> distinctSet = new LinkedHashSet<>();
        while (true){
            distinctSet.add(new Random().nextInt(10)+1);
            if(distinctSet.size() == 10){
                break;
            }
        }
        distinctSet.forEach(e->{
            System.out.print(e + " ");
        });
    }

}