본문 바로가기
TIL/내배캠 사전캠프 문제풀이

DAY - 2 문제 풀이

by J1-H00N 2023. 4. 11.
package sparta;
//
////4-1. 다음의 문장들을 조건식으로 표현해보세요.
//
////int형 변수 x가 10보다 크고 20보다 작을 때 true인 조건식 // x > 10 && x < 20
//
////char형 변수 ch가 공백이나 탭이 아닐 때 true인 조건식 // ch != ' '
//
////char형 변수 ch가 'x' 또는 'X'일 때 true인 조건식 // ch = 'x' || ch = 'X'
//
////char형 변수 ch가 숫자('0'~'9')일 때 true인 조건식 // ch >= '0' && ch <= '9'
//
////char형 변수 ch가 영문자(대문자 또는 소문자)일 때 true인 조건식 // ch >= 65 && ch <= 122
//
////int형 변수 year가 400으로 나눠떨어지거나 또는 4로 나눠떨어지고 100으로 나눠떨어지지 않을때 true인 조건식 // year % 400 == 0 || year % 4 == 0 && year % 100 != 0
//
////boolean형 변수 powerOn이 false일 때 true인 조건식 // powerOn == false
//
//
////문자열 참조변수 str이 "yes"일 때 true인 조건식
//
//
//
//4-2. 1부터 20까지의 정수중에서 2 또는 3의 배수가 아닌 수의 총합을 구하세요.
class Exercise4_2 {
    public static void main(String[] args) {
        int sum = 0;
        int i = 1;

        for(i = 1, sum = 0; i <= 20; i++) {
            if(i % 2 == 0 || i % 3 == 0)
                continue;
            sum += i;
        }
        System.out.println("sum="+sum);
    }
}
//
//
//
//4-3. 1+(1+2)+(1+2+3)+(1+2+3+4)+...+(1+2+3+...+10)의 결과를 계산하세요.
class Exercise4_3 {
    public static void main(String[] args) {
        int sum = 0;
        int totalSum = 0;
        int i = 1;

        for(i = 1, sum = 0, totalSum = 0; i <= 10; i++){
            sum += i;
            totalSum += sum;
        }

        System.out.println("totalSum="+totalSum);
    }
}
//
//
//
//4-4. 1+(-2)+3+(-4)+...과 같은 식으로 계속 더해나갔을 때,
//몇까지 더해야 총합이 100 이상이 되는지 구하세요.
class Exercise4_4 {
    public static void main(String[] args) {
        int sum = 0; // 총합을 저장할 변수
        int s = 1; // 값의 부호를 바꿔주는데 사용할 변수
        int num = 0;

        while(sum < 100){
            num++;
            System.out.println("num = " + num);
            sum += num*s;
            System.out.println("sum = " + sum);
            s *= -1;
            System.out.println("s = " + s);
        }

        System.out.println("num="+num);
        System.out.println("sum="+sum);
    }
}
//
//
//
//4-5. 다음의 for문을 while문으로 변경하세요.
class Exercise4_5 {
    public static void main(String[] args) {
        int i = 0;
        while(i <= 10) {
            int j = 0;
            while(j <= i) {
                System.out.print("*");
                j++;
            }
            System.out.println();
            i++;
        }
    }//end of main
} // end of class
//
//
//
//4-6. 두 개의 주사위를 던졌을 때, 눈의 합이 6이 되는 모든 경우의 수를 출력하는 프로그램을 작성하세요.
class Exercise4_6 {
    public static void main(String[] args) {
        int[] dice1 = {1, 2, 3, 4, 5, 6};
        int[] dice2 = {1, 2, 3, 4, 5, 6};
        int i = 0;
        int j = 0;

        for(i = 0, j = 0; i < 6; i++){
            for(j = 0; j < 6; j++){
                if(dice1[i]+dice2[j] == 6){
                    System.out.println("["+dice1[i]+"]"+"["+dice2[j]+"}");
                }
            }
        }
    }
}
//
//
//
//4-7. 숫자로 이루어진 문자열 str이 있을 때, 각 자리의 합을 더한 결과를 출력하는 코드를 완성하세요.
//만일 문자열이 "12345"라면, ‘1+2+3+4+5’의 결과인 15를 출력이 출력되어야 합니다.
class Exercise4_7 {
    public static void main(String[] args) {
        String str = "12345";
        int sum = 0;

        for (int i = 0; i < str.length(); i++) {
            int num = str.charAt(i) - '0';
            sum += num;
        }

        System.out.println("sum=" + sum);
    }
}//예상 결과 : sum=15
//
//
//
//4-8. Math.random()을 이용해서 1부터 6 사이의 임의의 정수를 변수 value에 저장하는 코드를 완성하세요.
class Exercise4_8{
    public static void main(String[] args){
        int value = ((int)(Math.random()*6)+1);
        System.out.println("value:"+value);
    }
}
//
//
//
//4-9. int 타입의 변수 num이 있을 때, 각 자리의 합을 더한 결과를 출력하는 코드를 완성하세요.
//만일 변수 num의 값이 12345라면, ‘1+2+3+4+5’의 결과인 15를 출력하세요.
//문자열로 변환하지 말고 숫자로만 처리하세요.
class Exercise4_9 {
    public static void main(String[] args) {
        int num = 12345;
        int sum = 0;
        while(num>0){
            sum += num % 10;
            num /= 10;
        }
        System.out.println("sum="+sum);
    }
}//예상 결과 : sum=15
//
//
//
//4-10. 다음은 숫자맞추기 게임을 작성한 것이다. 1과 100사이의 값을 반복적으로 입력해서
//컴퓨터가 생각한 값을 맞추면 게임이 끝난다.
//사용자가 값을 입력하면, 컴퓨터는 자신이 생각한 값과 비교해서 결과를 알려준다.
//사용자가 컴퓨터가 생각한 숫자를 맞추면 게임이 끝나고 몇 번 만에 숫자를 맞췄는지 알려준다.

class Exercise4_10 {
    public static void main(String[] args) {
        // 1~100사이의 임의의 값을 얻어서  answer에 저장한다.
        int answer = (int)(Math.random()*100)+1;
        int input = 0; //사용자입력을 저장할 공간
        int count = 0; //시도횟수를 세기위한 변수

        // 화면으로 부터 사용자입력을 받기 위해서 Scanner클래스 사용
        java.util.Scanner s = new java.util.Scanner(System.in);
        do {
            count++;
            System.out.print("1과 100사이의 값을 입력하세요 : ");
            input = s.nextInt(); //입력받은 값을 변수 input에 저장한다.
            if(input > answer){
                System.out.println("더 작은 수를 입력하세요.");
            } else if (input < answer) {
                System.out.println("더 큰 수를 입력하세요.");
            } else {
                System.out.println("맞혔습니다.");
                System.out.println("시도 횟수는 " + count + "번입니다.");
                break ;
            }
        } while(true); //무한반복문
    } // end of main
} // end of class
//예상 결과
//1과 100사이의 값을 입력하세요 : 50
//더 큰 수를 입력하세요.
//1과 100사이의 값을 입력하세요 : 75
//더 큰 수를 입력하세요.
//1과 100사이의 값을 입력하세요 : 87
//더 작은 수를 입력하세요.
//1과 100사이의 값을 입력하세요 : 80
//더 작은 수를 입력하세요.
//1과 100사이의 값을 입력하세요 : 77
//더 작은 수를 입력하세요.
//1과 100사이의 값을 입력하세요 : 76
//맞혔습니다.
//시도횟수는 6번입니다.

 

package sparta;
import java.util.Arrays;
import java.util.Scanner;

//5-1. 다음은 배열을 선언하거나 초기화한 것이다. 잘못된 것을 고르고 그 이유를 설명하세요.
//        int[] arr[]; // 새로운 배열을 선언할 때는 타입[] 배열명; 또는 타입 배열명[];인데 둘 다 []를 붙여서
//        int[] arr = {1,2,3,}; // 위에서 이미 arr을 선언했기 때문에 arr = new int[]{1,2,3}으로 해야한다.(3뒤에 , 제거)
//        int[] arr = new int[5]; //위에서 이미 arr을 선언했기 때문에 arr2로 선언하든 해야함. 변경 불가
//        int[] arr = new int[5]{1,2,3,4,5}; // 두 번째 줄과 마찬가지로 앞에 int[] 생략
//        int arr[5]; // arr 이미 선언됨
//        int[] arr[] = new int[3][]; // ???
//
//
//
////5-2. 다음과 같은 배열이 있을 때, arr[3].length의 값은?
//        int[][]arr ={
//        {5,5,5,5,5},
//        {10,10,10},
//        {20,20,20,20},
//        {30,30}
//        };
//        {30, 30}의 길이이므로 2



//5-3. 배열 arr에 담긴 모든 값을 더하는 프로그램을 완성하세요.
class Exercise5_3{
    public static void main(String[] args){
        int[] arr = {10, 20, 30, 40, 50};
        int sum = 0;
        for(int i = 0; i < arr.length; i++){
            sum += arr[i];
        }
        System.out.println("sum="+sum);
    }
}//예상 결과 : sum=150



//5-4. 2차원 배열 arr에 담긴 모든 총합과 평균을 구하는 프로그램을 완성하세요.
class Exercise5_4 {
    public static void main(String[] args) {
        int[][] arr = {
                { 5, 5, 5, 5, 5 },
                { 10, 10, 10, 10, 10 },
                { 20, 20, 20, 20, 20 },
                { 30, 30, 30, 30, 30 }
        };

        int total = 0;
        float average = 0;

        for(int i = 0; i < arr.length; i++){
            for(int j = 0; j < arr[i].length; j++) {
                total += arr[i][j];
                average = total / (float)arr[i].length / (float)arr.length;
            }
        }

        System.out.println("total=" + total);
        System.out.println("average=" + average);
    } // end of main
} // end of class



//5-5. 다음은 1과 9 사이의 중복되지 않은 숫자로 이루어진 3자리 숫자를 만들어내는 프로그램이다.
//코드를 완성하세요. 다만 Math.random()을 사용했기 때문에 실행 결과 예시와 다를 수 있습니다.
class Exercise5_5{
    public static void main(String[] args) {
        int[] ballArr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
        int[] ball3 = new int[3];

        // 배열 ballArr의 임의의 요소를 골라서 위치를 바꾼다
        for (int i = 0; i < ballArr.length; i++) {
            int j = (int) (Math.random() * ballArr.length);
            int tmp = 0;

            tmp = ballArr[0];

            ballArr[0] = ballArr[j];
            ballArr[j] = tmp;
            System.out.println(Arrays.toString(ballArr));
        }

        // 배열 ballArr의 앞에서 3개의 수를 배열 ball3로 복사한다

        for (int i = 0; i < 3; i++) {
            ball3[i] = ballArr[i];
        }
        for (int i = 0; i < ball3.length; i++) {
            System.out.print(ball3[i]);
        }
    }//end of main
}//end of class



//5-6. 단어의 글자위치를 섞어서 보여주고 원래의 단어를 맞추는 예제이다.
//실행결과와 같이 동작하도록 빈 칸을 채우세요.


class Exercise5_13 {
    public static void main(String args[]) {
        String[] words = { "television", "computer", "mouse", "phone" };

        Scanner scanner = new Scanner(System.in);

        for (int i = 0; i < words.length; i++) {
            char[] question = words[i].toCharArray(); // String을 char[]로 변환

            for(int j = 0; j < question.length; j++){
                int num = (int)(Math.random()*question.length);

                char tmp = question[0];

                question[0] = question[num];
                question[num] = tmp;
            }

            System.out.printf("Q%d. %s의 정답을 입력하세요 .>", i + 1, new String(question));
            String answer = scanner.nextLine();

            // trim()으로 answer의 좌우 공백을 제거한 후, equals로 word[i]와 비교
            if (words[i].equals(answer.trim()))
                System.out.printf("맞았습니다.%n%n");
            else
                System.out.printf("틀렸습니다.%n%n");
        }
    } //end of main
}//end of class

'TIL > 내배캠 사전캠프 문제풀이' 카테고리의 다른 글

DAY -1 문제 풀이  (0) 2023.04.11