day11

상은👸·2023년 9월 11일
0

뚜벅뚜벅 첫번째

목록 보기
10/26
post-thumbnail

✏️연습문제 4

윷놀이 게임
4개의 윷을 입력받고 결과를 출력하시오.
(뒷도는 없습니다!)
0 : 안 뒤집어진 상태
1 : 뒤집어진 상태
ex) 입력 0 0 1 0
결과 도
입력 0 1 0 1
결과 개

Scanner scan = new Scanner(System.in);
System.out.print("윷놀이 0 또는 1로 네 자리 입력하세요 : ");
int yut1 = scan.nextInt();
int yut2 = scan.nextInt();
int yut3 = scan.nextInt();
int yut4 = scan.nextInt();

int yutSum = yut1+yut2+yut3+yut4;

if ( (yut1>=0 && yut1<=1) && (yut2>=0 && yut2<=1) && (yut3>=0 && yut3<=1) && (yut4>=0 && yut4<=1) ) {
	if (yutSum == 0) {
    	System.out.println("모");
    } else if (yutSum == 1) {
    	System.out.println("도");
    } else if (yutSum == 2) {
    	System.out.println("개");
    } else if (yutSum == 3) {
    	System.out.println("걸");
    } else {
    	System.out.println("윷");
    }
     
} else {
	System.out.println("잘못입력!! 0,1중에 하나 쓰세요");
}

=> 4개 윷을 더했을때 1이면 도, 2이면 개, 3이면 걸, 4이면 윷, 0이면 모가 나와야 하는거잖아!?

=> 일단 0이랑 1만 나오게 if절로 조건문 잡아주고!

=> int yutSum = yut1+yut2+yut3+yut4; 으로 더한값을 변수로 선언하고 yutSum == 0,1,2,3,4일때 나오는 값을 정한다

※ switch문으로 변환하기!!

switch (yutSum) {
case 1:
	System.out.println("도");
    break;
case 2:
	System.out.println("개");
    break;
case 3:
	System.out.println("걸");
    break;
case 4:
	System.out.println("윷");
    break;
default :
	System.out.println("모");
}

=> 이런식으로 변환할수도 있다!
=> 마찬가지로 마지막 default에는 break;를 안붙여도 된당!

✏️아침퀴즈

아래와 같은 결과가 출력되도록 코드를 작성하시오.
1.
12345
12345
12345
12345
12345

=>

for (int i=1; i<=5; i++) {
	for (int j=1; j<=5; j++) {
    	System.out.print(j);
    }
    System.out.println();
}

=> 먼저 이중 for 문을 이용해야해 i가 아니라 j가 출력되게해야 12345를 출력되겠지! for문 안에 있는 for문이 돌아가야 숫자 순서대로 출력!

=> 이중 for문이니까 12345가 5번 나올거란말야
1234512345123451234512345 이렇게 나오겠지 저 문제처럼 코드 출력되게 하려면 12345 나오고 한줄 띄어져야하잖아!

=> 그래서 for문 j가 끝나고 엔터가 입력되야
12345 엔터
12345 엔터
12345 엔터
12345 엔터
12345 엔터
이렇게 출력이 되겠죠~!

  1. 11111
    22222
    33333
    44444
    55555

=>

for (int i=1; i<=5; i++) {
	for (int j=1; j<=5; j++) {
    	System.out.print(i);
    }
    System.out.println();
}

=> 이건 위에꺼랑 비슷한논리인건데! 여기선 j가 아니라 i를 출력해야지

=> 제일 밖에 있는 for문을 돌리면 1이 먼저 5번 나오고 2가 5번 나오고 이런식으로 출력이 된다!!!
그래서 i를 출력하면 1111122222333334444455555가 될거란 말야

=> 이것도 마찬가지로 i 한줄 출력되고 그다음 엔터처리 되기위해서는 위에꺼랑 마찬가지로 작성하면
11111 엔터
22222 엔터
33333 엔터
44444 엔터
55555 엔터
로 출력이 된다~!

✏️연습문제 1

  1. 중첩반복문을 활용하여 아래와 같이 결과가 나타나도록 출력코드를 작성해주세요.

*5개
4개
3개
2개
1개

=>
for (int i=1; i<=5; i++) {
for (int j=1; j<=5; j++) {
System.out.print("*");
}
}
System.out.println();

->
for (int i=0; i<=5; i++) {
for (int j=i+1; j<=5; j++) {
System.out.print("*");
}
}
System.out.println();

=> 값이 어떻게 나올수있을지 먼저 써보고 대입..?!?
// i 0 j 12345
i 1 j 2345
i 2 j 345
i 3 j 45
i 4 j 5

=> 저기서 밑줄 친 부분이 중요한 것!

=> j 부분이 출력되는건데! 범위를 5까지로 해놓으면 처음엔 별이 5개가 출력이 되겠지

=> 엔터 이후 4개가 출력이 되려면 처음 j를 초기화 하는 부분을 j=i+1; 로 해주게 되면
처음 시작이 1,2,3,4,5 늘어나면서 마지막 별갯수가 1개가 되겠죠!!

=> 근데 i=1;로 해놓게 되면 j가 2부터 시작하게 되니까 별이 4개부터 나오게 됨!

=> i는 줄을 의미! 저기서 i의 범위가 5 이상되도 상관없는게 5이상이 되면 for문 j를 빠져나가기때문에 엔터효과만 날것이당 ..!

=동일!!!!!!!!

for (int i=1; i<=5; i++) {
	for (int j=1; j<=6-i; j++) {
    	System.out.print("*");
    }
}
System.out.println();

// i 1 j 12345
i 2 j 1234
i 3 j 123
i 4 j 12
i 5 j 1
인경우!!!!

=> j<=6-i;로만 바꿔도 정답나온당..!

✏️연습문제 2

  1. 중첩반복문을 활용하여 아래와 같이 결과가 나타나도록 출력코드를 작성해주세요.
    *1개
    2개
    3개
    4개

=>

for (int i=1; i<=5; i++) {
for (int j=1; j<=5; j++) {
System.out.print("*");
}
}
System.out.println();

->
for (int i=0; i<4; i++) {
for (int j=1; j<=i+1; j++) {
System.out.print("*");
}
}
System.out.println();

=> 여기서는 별4321 순으로 낮아져야 한다!

=> 여기서는 처음에 별이 1개가 나와야하기때문에 범위를 넓히면 안되고 좁게 해야지
그래서 범위 설정을 j<=i+1;로 설정을 해주고!

=> 마찬가지로 i를 0으로 잡아야한다 1로 해놓으면 별이 2개부터 출력되기때문에!

=> i는 줄을 의미하기때문에 여기서는 i의 범위가 중요하지! 범위가 넓어지면 별이 그만큼 더 생성되는거니까!
그래서 0부터 시작하니까 4줄이 나오려면 i<4까지!

=동일!!!!!!!!!!!!

for (int i=1; i<=4; i++) { 
	for (int j=1; j<=i; j++) {
		 System.out.print("*");
	}
		System.out.println();
}

// i1 j1
i2 j12
i3 j123
i4 j1234

=> 먼저 값을 출력해보고 식 정하는게 나을거 같은데..!

=> i는 그대로 냅두고 j만 건드려보는식으로 한번 식세워보자!

✏️연습문제 3

  1. 입력된 수의 약수를 출력하시오.
    ex) 입력 : 6
    1 2 3 6

=>

Scanner scan = new Scanner(System.in);
System.out.print("입력 : ");
int input = scan.nextInt();

for (int i=1; i<=input; i++) {
	if (input % i == 0) {
   		System.out.print(i + " ");
    }
}

=> 입력값만큼 범위를 잡고
=> 약수는 6 기준으로 딱 나누어 떨어지는 수를 찾는거잖아!
그러니까 6%6 == 0, 6%3==0, 6%2==0, 6%1==0 다 이렇게 나머지값이 0으로 떨어지는 수를 찾아야됨! 6이면 6부터 654321 다 비교해봐서 딱 떨어지는 수!

✏️연습문제 4

  1. 중첩반복문을 활용하여 아래와 같이 결과가 나타나도록 출력코드를 작성해주세요.
    숫자를 입력받고 아래 문양으로 * 출력하기
    ex) 입력 : 5

*1개
2개
3개
4개
5개
4개
3개
2개
1개

=>

Scanner scan = new Scanner(System.in);
System.out.print("입력 : ");
int input = scan.nextInt();
	
for (int i=1; i<=input; i++) { 
	for (int j=1; j<=i; j++) {
		System.out.print("*");
	}
		System.out.println();
}
// i 최대한 건드리지 않는 선에서 j만 건드려보자! 
// i 1 j 1
// i 2 j 12
// i 3 j 123
// i 4 j 1234
// i 5 j 12345
		
for (int i=1; i<=input; i++) { 
	for (int j=1; j<=input-i; j++) {
		System.out.print("*");
	}
		System.out.println();
}
		
// i 1 j 1234 //j가 5가 안나와야하니까 input에 i를 빼준다!!
// i 2 j 123
// i 3 j 12
// i 4 j 1

=> 위에 연습문제 1,2번 응용문제다!

=> 첫번째 이중 for문은 입력값만큼 별이 나와야하니까 i<=input 으로 범위 지정해주고
for j문에서 j<=i로 범위 지정해주면 1 12 123 1234 12345 순으로 나올거얌..!
★그니까! 먼저 출력될 값을 써놓고 대입해보면서 식써보자★

=>
처음에 입력값 5을 넣으면 위에 이중 for문은 12345까지 나와야하니까 신경안썼는데
두번째 이중 for문은 1234 123 12 1 순으로 나와야하니까 j<=input-i 로 범위 잡아주면 된다!

profile
뒤죽박죽 벨로그

0개의 댓글

관련 채용 정보