원지의 개발
article thumbnail
728x90

1. for & for ~ for

1.1. Quiz

출력은 가로, 혹은 세로로만 가능함

1.1.1. Quiz15 - 구구단 출력 (가로)

1. 가로로 출력하면 단은 바뀌고, 1은 고정 -> 밖 for: 1 = i, 안 for: 단 = j
    밖: for(int i = 1; i <= 9; i++)

    안: for(int j = 1; j <= 3; j++)

2. 가로로 출력, 하나 끝날때 마다 8칸 띄어서 줄 맞춤

    printf("%d x %d = %d\t", i , j, i*j) => 1*1=1        2*1=2        3*1=3

3. 한줄 내려서 밖 for인 i가 2부터 안 for인 j가 1~3까지 반복 출력

    println을 밖 for안에 넣어주면 됨

    => 1x1=1        2x1=2        3x1=3

         1x2=2        2x2=4        3x2=6

         안for x 밖for = 안*밖

4. 1~3단, 4~6단, 7~9단 나눠서 출력

 

Quiz15 - 구구단 출력 (세로) - 복습

1. 세로로 봤을때는 밖 for인 단이 1, 4, 7로 늘어남

    for(int i = 1; i <= 9; i+=3)

2. 안 for 1~9까지 바뀜

    for(int j = 1; j <= 9; j++),  pintln 하면

    => 1x1=1
         1x2=2
         1x9=9
         4x1=4
         4x2=8
         4x9=36
         7x1=7
         7x2=14
         7x9=63

3. 이 상태로 가로로 +1, +2씩 늘려가면서 출력, 한줄 끝나면 8칸 띄어쓰면서 줄맞춤

   print( i + "x" + j + "=" + i*j + "\t") => 1x1=1

   print( i + "x" + j + "=" + i*j + "\t") => 2x1=2

   print( i + "x" + j + "=" + i*j + "\t") => 3x1=3

4. 1x1=1        2x1=2        3x1=3이 끝나면 아래부터 다시 시작해야 하니까 안 for문 안에 pirntln

5. 1 2 3 단이 끝나면 한줄씩 띄어서 구분해야 하니까 밖 for문 안에 pirntln

 

1.1.2. Quiz16 - 입력받은 가로, 세로 길이로 사각형

1. 가로, 세로 길이 입력 받음 => scanner 사용

2. for문 세로 b (행) 먼저 찍음

    그 안에서 가로 a (열) 찍음

    int i = 1; i <= b; i++

    int j = 1; j >= a; j++  => 사각형 별 다 찍힘

3. a안에서 if문 사용하여 *하고 공백 구분

    if( i == 1 || i == b || j == 1 || j == a ) => *

    나머지 => 공백

    결국 첫번째, 마지막 행, 열에서만 * 찍기

4. 가로로 한줄 다 찍고 내려와서 찍어야 하니까 println은 밖 for 안에 있어야 함

 

 

 

1.1.3. MultiForEx02 - 삼각형으로 별 찍기

1. 행(세로)을 나타내는 star 변수 선언

    ( 행 변경하기 용이: 맞춰서 찍어줌 )

2. 세로 i (행) 만들어서 내려오면서 pintln

    그 안에서 가로 j (열) 찍음

    int i = 1; i <= star; i++

    int j = 1; j <=i*2-1; j++

    별이 찍히는 규칙 찾기 중요

3. 공백은 별 찍기 전에 들어감

  int j = 1; j <=star-i; j++

    공백도 규칙 찾기 중요

 

 

MultiForEx02 - 역삼각형으로 별 찍기

1. 삼각형같이 세로 i (행) 만들어서 내려오면서 pintln

2. 그 안에 가로 j (열) 찍음

3. 별, 공백 규칙 찾기 중요

  별: int j = 1; j <=(star2-i)*2+1; j++

  공백: int j = 1; j <=i-1; j++

 

 

 

 

 

 

 

 

 

 

1.1.4. MultiForEx03 - 입력받은 수까지 중 소수의 개수

1. 정수 num 입력 받기 => scanner 사용

2. 밖 for i = 1부터 num까지

3. 안 for j = 1부터 i까지 i를 j로 나누면서 나머지가 0이면 딱 떨어지면(약수) count를 세겠다.

4. count 변수는 안 for 밖 = 밖 for 안에 생성

5. 밖 for에서 count == 2이면 1과 자기 자신인 소수

밖에 for가 반복하면서 count를 계속 초기화 시킴

 

다시 이해하기

약수 - 딱 나누어 떨어지는 수

소수 - 약수가 1과 자기 자신밖에 없는 수

 

 

 

 

 

 

 


2. 향상된 for

for ( 배열의 값을 담을 변수 선언 : 배열 이름 ) {

      실행문;

      }

  • (배열 및 컬렉션에 들어있는) 모든 원소들에 대한 반복 작업 적합
  • 연속된 자료를 실행시키기에 적합 - 사용만 가능
  • 배열 다루기 용이
  • 값을 임시 객체로 복사해서 사용하므로 원본을 사용하는 것이 아니므로
    배열이나 ArrayList 값을 사용할 수는 있지만 수정 할 수 없음

EnhanceForEx - 향상된 for문으로 배열값

1. 배열 선언, 생성, 초기화

2. 향상 for문

    변수 입력 : 배열 이름

3. 출력값

    println(변수);

5. 반복문을 지나면서 i 1씩 증가

 

EnhanceForEx - 배열 값의 합계, 평균

(소수2자리까지)

1. 배열 선언, 생성, 초기화

2. 합계 구하려면 변수 sum생성

3. 향상된 for문 사용

   for( 변수 입력 : 배열 이름 ) 

4. i 가 들어오면서 자기 자신에게 더함

    sum += i;

5. 합계는 sum

6. 평균은 sum/score.length(배열 길이)

7. 평균은 소수 두자리까지 double로 캐스팅

    표현값 %.2f 사용

 

2.1. 배열의 인덱스도 사용 가능

<java />
for (int[] query : queries) { int i = query[0]; int j = query[1]; int temp = answer[i]; answer[i] = answer[j]; answer[j] = temp; }

오늘 하루

더보기

기억에 남는 부분

- for ~ for문 i회전수 * j회전수 = 전체 회전수

 

어려운 부분

- for ~ for문, 향상된 for문 전체적으로 익숙하지 않음

- 약수, 소수관련 문제

 

문제 해결 부분

- 구구단 가로로 출력 부분

- 역삼각형으로 별찍기 규칙 찾기

 

728x90
profile

원지의 개발

@원지다

250x250