이제 노는요일 없이 정말 주5일 내내 빡세게 달려야 한다.
그동안 솔직히 대충 아는 내용에 복습을 계속해서 좀 지겨웠는데, 오늘 부터 모르는 내용이 하나씩 등장했다.
우선 가장 먼저는 2차 for문
for문 안에 for문이 들어가 있는 형태이다.
그렇기 때문에 조건역시 2번 걸어줘야 한다.
형식은 아래와 같다.
/*
* 이중 반복문 (중첩 for)
* 형식)
* 가로 : 이차 for
* 세로 : 일차 for
*
* 2*1=2 3*1=3 4*1=4 5*1=5 .... 9*1=9
* --
* --
* --
* --
* 2*9=18 3*9=27 -----
* ↗ false: 종료
* 1 → 2 ← 4
* for(초기값;조건식;증가식) ==> 줄수 ===> 추천
* { ↗
* ↓ true
* 3
* ==========================================
* 1 → 2 ← 4
* for(초기값;조건식;증가식)==> 실제 반복내용 수행
* { ↗
* ↓ true
* 3
* 반복수행 문장
* }
* ==========================================
* 다음줄에 출력
* }
*/
public class 이중반복문_for {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i=1;i<=5;i++)
{
for(int j=1;j<=5;j++)
{
System.out.println("i="+i+",j="+j);
// i=1 => j=1,2,3,4,5
// i=2 => j=1,2,3,4,5
// i=3 => j=1,2,3,4,5
// i=4 => j=1,2,3,4,5
// i=5 => j=1,2,3,4,5
}
}
}
}
세로: 1차 for문
가로: 2차 for문
이것만 잘 외워도 헷갈리지는 않을것 같은데 수업 들을때는 확확 지나가서 좀 어렵게 느껴졌다.
코드를 따라쓰고 끝내는게 아니라 나도 쓸 수 있는지 다시 확인을 해봐야 하기 때문에
지금 한 번 써보고 다시 적도록 하겠다.
public class 구구단연습 {
public static void main(String[] args) {
for(int i =1; i<=9; i++)
{
for(int j=2; j<=9; j++)
{
System.out.printf("%d * %d = %d \t", j,i,j*i);
}
}
}
}
엄.. 뭔가 엄청.. 쉽게 나왔는데? 잘 이해했나보다...
그럼 별찍기를 해보겠다
코테에 아주 쉬운 난이도 문제로 나오는거 같던데 (너무 쉬워서 아닐 수도 있음)
public class 별찍기연습 {
public static void main(String[] args) {
/*
* ★
* ★★
* ★★★
* ★★★★
*
* i j
* 줄수 별표
* 1 1
* 2 2
* 3 3
* 4 4
*
*/
for(int i=1; i<=4; i++) {
for(int j=1; j<=i; j++) {
System.out.print("★");
}
System.out.println();
}
}
}
하아.. 이게 뭐라고 어렵네 ^^
일단 가장 중요한건 줄수, 별수를 파악해서 어떻게 증가시켜줄지 생각을 먼저 하는거다
그리고 한칸 띄어 주는것도 중요하다.
public class 별찍기연습 {
public static void main(String[] args) {
/*
* ★★★★
* ★★★
* ★★
* ★
*
* 줄수 별표
* i j
* 1 4
* 2 3
* 3 2
* 4 1 ==> i+j=5 ==> j>=5-i
*/
for(int i =1; i<=4; i++) {
for(int j=4; j>=5-i; j--) {
System.out.print("*");
}
System.out.println();
}
}
거꾸로 찍어줬다. 수업때 배운 예제 코드를 보니 다르게 썼던데 혼자 풀어볼때 다르게 써서 같은 값을 냈으면 잘한거 같다.
public class 별찍기연습 {
public static void main(String[] args) {
/*
* ★★★★★★★★★★ (10개)
* ★★★★★★★★★★
* ★★★★★★★★★★
* ★★★★★★★★★★
* ★★★★★★★★★★
*/
for(int i = 1; i<=5; i++) {
for(int j = 1; j<=10; j++) {
System.out.print("★");
}
System.out.println();
}
}
}
잘 나오고도 찝찝한 이 기분.. 왜 이렇게 나오지 싶어서 위에 쓴 코드랑 다시 비교해봤다.
머저리같애.. 스스로가...
다음 예제는 반드시.. 제대로 이해하고 풀겠다
아놔 ㅋㅋㅋㅋ 다른 문제 풀려고 쓴 코드가 그 다음 예제랑 맞아서 그냥 또 바꿔서 써본다.
public class 별찍기연습 {
public static void main(String[] args) {
/*
* ABCD
* ABCD
* ABCD
* ABCD
*
*/
for(int i=1; i<=4; i++) {
for(char j='A'; j<='D'; j++) {
System.out.print(j);
}
System.out.println();
}
}
}
다시...
다음 예제
public class 별찍기연습 {
public static void main(String[] args) {
/*
* ABCD
* EFGH
* IJKL
* MNOP
*
*/
char c ='A';
for(int i=1; i<=4; i++) {
for(char j=1; j<=4; j++) {
System.out.print(c++);
}
System.out.println();
}
}
}
변수를 먼저 설정을 해주고, 그 변수에 하나씩 더해주는 방법을 써야했다.
위의 코드는 for문 자체를 char로 돌린 기이한 ㅋㅋ 코드가 됐는데 어쨌든 둘다 맞는 방법이니까.
public class 별찍기연습 {
public static void main(String[] args) {
/* j=1234
* i=1 1###
* i=2 #2##
* i=3 ##3#
* i=4 ###4
* ======
* 세로 : 4줄 => for(int i=1; i<=4; i++) => 1차 for문
* 가로 : 4줄 => for(int j=1; j<=4; j++) => 2차 for문
* p.156
*/
for(int i=1; i<=4; i++) {
for(int j=1; j<=4; j++) {
if(i==j) {
System.out.print(i);
}
else {
System.out.print("#");
}
}
System.out.println();
}
}
}
이중 for문에 if, else 조건문을 활용하면 만들 수 있는 모양
확실히 이쯤 하면 완벽히는 아니어도 대충 이해가 가야한다.
하 ㅋㅋㅋㅋㅋㅋㅋ
찍어보고 어이없고 웃겨서 그냥 캡쳐해봤다.
이딴 모양은 또 첨보네
public static void main(String[] args) {
/*
* *
* **
* ***
* ****
* ====================
* i j k i,j i,k
* 줄수 공백 별표
* 1 3 1 i+j=4 ==> j=4-i i=k ==> k=i
* 2 2 2
* 3 1 3
* 4 0 4
* =====================
*
*/
for(int i=1; i<=4; i++) {
for(int j=1; j<=4-i; j++) {
System.out.print(" ");
}
for(int k=1; k<=i; k++) {
System.out.print("★");
}
System.out.println();
}
}
제대로 찍혔다 이번에는
이제 마지막 문제
public static void main(String[] args) {
/*
*
* ****
* ***
* **
* *
*
* i j k i+k=5 ==> k=5-i
* 줄수 공백 별표 j=i-1
* 1 0 4
* 2 1 3
* 3 2 2
* 4 3 1
*/
for(int i=1; i<=4; i++) {
for(int j=0; j<=i-1; j++) {
System.out.print(" ");
}
for(int k=1; k<=5-i; k++) {
System.out.print("★");
}
System.out.println();
}
}
내가 나중에 이걸 이해할 수 있을까?
제발 그러기를 바란다...
'programming > Gukbi' 카테고리의 다른 글
국비 교육 9일차 - 배열 활용 (2) | 2021.01.06 |
---|---|
국비 교육 8일차 - 배열 (0) | 2021.01.05 |
국비 교육 6일차 - 반복문 (0) | 2020.12.31 |
국비 교육 5일차 - 조건문 (0) | 2020.12.31 |
국비 교육 4일차 - 연산자, 제어문 (0) | 2020.12.28 |