윷놀이 게임
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 엔터
이렇게 출력이 되겠죠~!
=>
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 엔터
로 출력이 된다~!
*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;로만 바꿔도 정답나온당..!
=>
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만 건드려보는식으로 한번 식세워보자!
=>
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 다 비교해봐서 딱 떨어지는 수!
*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 로 범위 잡아주면 된다!