스퐁지송 개발노트

22.12.08(목) 문제풀이 for, while, 배열 본문

JAVA 입문 시작

22.12.08(목) 문제풀이 for, while, 배열

강준석 2022. 12. 8. 17:03
728x90

문제1

1+(1+2)+(1+2+3)+...(1+2+3+...+10)의 값 220이 나와야한다

 

package 테스트;

//1+(1+2)+(1+2+3)+...(1+2+3+...+10)의 값 220이 나와야한다

public class test01 {

	public static void main(String[] args) {

		int sum = 0;

		for (int i = 0; i <= 10; i++) {

			for (int j = 0; j <= i; j++) { //괄호안의 식 그러므로 반복은 i만큼

				sum = sum + j;

			}

		}

		System.out.println(sum);

	}

}

 

for문을 한개만 이용해서 더 간단하게 만들어보기

 

package 테스트;

//1+(1+2)+(1+2+3)+...(1+2+3+...+10)의 값 220이 나와야한다

public class test01 {

	public static void main(String[] args) {

		int sum = 0; // 각 괄호안의 합계
		int tot = 0; // 전체의 총합

		for (int i = 0; i <= 10; i++) {
			sum = sum + i;
			tot = tot + sum;

		}

		System.out.println(tot);

	}

}

 

 

문제2

1+(-2)+3+(-4)+.. 과 같은 식으로 계속 더해나갔을 때, 몇까지 더해야 총합이 100이상이 되는지 구하시오.

 

package 테스트;

public class test02 {
	
// 1+(-2)+3+(-4)+.. 과 같은 식으로 계속 더해나갔을 때, 몇까지 더해야 총합이 100이상이 되는지 구하시오.
	
	public static void main(String[] args) {

		int sum = 0;	//합계 저장 변수
		int num=0;	// 숫자(양수 ,음수 둘다 표현)
		int i = 0; // 숫자(양수, 음수표현 x)
		int s =1; //스위치 변수(1,-1)
		
		while(true) {
			i++;
			num = i * s;
			
			sum = sum + num;
			
			s = s * -1; //(s가 -1로(음수) 변경)

			if(sum>=100)
				break;
			
		}
		
		System.out.println("숫자 : "+ num);
		System.out.println("합계 : "+ sum);


	}
}

숫자 : 199
합계 : 100

 

 


문제3

두 개의 주사위를 던졌을 때 눈의 합이 6이 되는 모든 경우의 수를 출력하는 프로그램을 작성

 

package 테스트;

public class test02 {
	
	//두 개의 주사위를 던졌을 때 눈의 합이 6이 되는 모든 경우의 수를 출력하는 프로그램을 작성
	
	public static void main(String[] args) {

		for(int i =1;i<=6;i++) {
			for(int j=1;j<=6;j++) {
				if(i+j==6) {
					System.out.println(i+" , "+j);
				}
			}
		}
		
	}
}

1 , 5
2 , 4
3 , 3
4 , 2
5 , 1

 


문제4

int타입의 변수 num을 입력받아 각 자리의 합을 더한 결과를 출력하는 코드를 완성하라

만일 변수 num의 값이 12345라면 ,'1+2+3+4+5'의 결과인 15를 출력하라

(12345는 한번에 입력)

 

입력된 정수의 뒷자리부터 뽑아서 계산

package 테스트;

import java.util.Scanner;

//int타입의 변수 num을 입력받아 각 자리의 합을 더한 결과를 출력하는 코드를 완성하라
//만일 변수 num의 값이 12345라면 ,'1+2+3+4+5'의 결과인 15를 출력하라
//(12345는 한번에 입력)

public class test03 {

	public static void main(String[] args) {
		int num = 0;
		int sum = 0;

		Scanner sc = new Scanner(System.in);
		
		System.out.print("숫자입력 : ");
		num = sc.nextInt();
		
			while(num !=0 ) { 	//num값이 0이 아닐때 무한반복
				
				sum = sum + num%10;	//num을 10으로 나눈 나머지를 sum에 더한다 (5가 sum에 저장)
				
				num = num/10;	//num을 10으로 나눈 값을 다시 num에 저장한다(1234.5가 num에 저장)
								//하지만num은int 정수처리으므로 소숫점아래는 날라가서 1234가저장
            }
			
			System.out.println(sum);
	}
}

 


문제5

 

컴퓨터가 1~100까지의 숫자를 램덤으로 정함(ex 80)

숫자를 입력해서 그 숫자를 맞춰야한다

그리고 몇 번 만에 맞췄는지 알려줘야한다

ex) 숫자입력 : 50

-> 입력한 숫자보다 크다

    숫자입력 : 90

-> 입력한 숫자보다 작다

    숫자입력 : 80

-> 맞췄습니다 총 시도 횟수는 3번입니다.

 

package 테스트;

import java.util.Scanner;

public class test04 {

	public static void main(String[] args) {
		
		int random = (int)(Math.random()*100)+1;
		//(Math.random()은 0~1까지의 실수가 출력되므로 100을 곱하고 1을 더한다
		//그리고 정수처리(int)
		System.out.println("컴퓨터 지정 램덤숫자 : " + random);
		Scanner sc = new Scanner(System.in);
		
		int cnt=1; //반복횟수저장(1번에 맞춰도 1번에 맞췄다가 출력해야하므로)
		int me;	//내가 입력한 숫자
		
		while(true) {
			
			System.out.println("맞출 숫자를 입력하시오 : ");
			me=sc.nextInt();
			
			if(me>random) {
				System.out.println("입력한 숫자보다 작습니다");
			}if(me<random){
				System.out.println("입력한 숫자보다 큽니다");
			}if(me==random){
				System.out.print("정답 ~ "+cnt+"번 만에 맞췄습니당~ 기모링~");
				break;
			}
			cnt++;
		}
	}

}

컴퓨터 지정 램덤숫자 : 79
맞출 숫자를 입력하시오 : 
79
정답 ~ 1번 만에 맞췄습니당~ 기모링~

 


문제6

입력받은 숫자가 회문수(12321,15751...앞으로 읽어도 뒤로 읽어도 똑같은 수...)인지 출력하는 프로그램 완성

 

package 테스트;

import java.util.Scanner;

public class test05 {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);

		int num; // 입력받은숫자
		int tmp; // 임시저장
		int reverse = 0; // 뒤집은 숫자 저장

		System.out.println("숫자를 입력하시오 : ");
		num = sc.nextInt();

		tmp = num;

		while (tmp > 0) {
			//만약 입력된수가 121이라면
			reverse = reverse * 10 + tmp % 10;//reverse=3(0+3)
			tmp = tmp / 10; 
		}

		if (num == reverse) {
			System.out.println("회문수입니둥~");

		} else {
			System.out.println("회문수아닙니둥~");
		}

	}

}

 

while문안에 식 계산

숫자를 입력하시오 : 
121
회문수입니둥~

728x90
Comments