원지의 개발
article thumbnail
728x90

1. while + array

arr = {1, 2, 3, 4, 5}

index = 0,1, 2, 3, 4

 

0 =< 인덱스  개수 < 길이 = arr.length

0 =< 인덱스 개수 <= 길이-1 = arr.length-1

 

WhileEx06 - 배열 요소의 합

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

2. 반복할 조건식 만들기

    i = 인덱스 0부터 arr.length 인덱스 길이 미만

3. 누적, 합계를 원하므로 변수 sum 생성

4. 출력값

  - 인덱스 값: i , 0~9

  - 배열 안의 값: arr[i] , 1~10

  - 배열 안의 총 합: sum += arr[i] ,  1+ ~ +10

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

 

 

 

 

 

Quiz10 - 금액을 간결하게 나눠라

몫 출력 -> 나머지 money 저장 -> 반복

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

2. 반복할 조건식 만들기

    i = 인덱스 0부터 arr.length 인덱스 길이 미만

3. 출력값

    arr[i]: 배열 안의 값, 1000, 500, 100, 50, 10

    개수: money를 arr[i]로 나눈

    남은 돈: money를 arr[i]로 나눈 나머지

 

몫은 출력하고 남은 돈만 저장 -> 그 다음 몫 출력,

남은 돈 저장 -> 반복

 

 

 

 

 

 

 

 

Quiz11 - 배열의 크기만큼 입력받은 수 저장

1. 배열의 길이 결정 => scanner 사용

2. 길이에 맞는 배열 생성

    int [ ]  arr = new int [size]

3. 반복할 조건식 만들기

    i = 인덱스 0부터 arr.length 인덱스 길이 미만

4. while문 안에서 반복을 돌면서

    수들을 입력 받고 -> 순서대로 배열에 저장

   = size에 들어간 만큼 scanner로 그 안에 값 넣어줌

    int a = scan.nextInt();

    a는 배열 안에 들어가는 값 = arr[i]

5. 배열 한꺼번에 출력

  Arrays.toString(arr) => [a1, a2, a3, a4...]

 

 

 

 

 

 

 

 

 

 

 

WhileEx07 - 최대값, 최소값

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

0번째 인덱스 값을 저장 후 다음 인덱스 값과 비교 ->

큰 값을 저장 -> 반복

2. 최대값을 저장할 변수 생성

   max = arr[0];

3. 반복할 조건식 만들기

    i = 인덱스 0부터 arr.length 인덱스 길이 미만

4. 조건값

    배열 값이 현재 max 값보다 큰가?

    참이면 max에 그 값을 저장

    arr[i] > max? max = arr[i];

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

 

    최대값과 반대

1. 배열값이 현재 min 값보다 작은가?

    참이면 min에 그 값을 저장

    arr[h] < min? min = arr[h];

2. 반복문을 지나면서 h 1씩 증가
    ( 배열의 인덱스 순서 0, 1, 2, 3.... )

 

 


2. 반복문 do ~ while (거의 사용 X)

  • 반복문 먼저 실행 -> 조건문
  • 결과가 true이든 false이든 무조건 한번은 실행 (while문은 처음 실행 조건이 false라면 실행문이 실행X)
  • 조건식의 결과에 상관없이 루프를 반드시 한번 이상 실행시키도록 할 때 사용

while  -> 수박수박수박.....

do ~ while -> 박!수박수박수박.....

 


3. 반복문 for

  • 제어조건 (제어변수,평범식,증감)을 한꺼번에 지정
  • 정확한 반복 횟수를 알고 있을 때는 for문이 while문보다 유용
  • if문과 마찬가지로 조건식은 반드시 boolean타입
  • 실행문장이 한줄이면 블록 { }을 생략

3.0.1. for문

for ( 제어 변수(초기값); 조건식; 증감(반복 표현식) ) {
       반복할 실행문;

      }

while -> for 변경

ForEx02 - 소수인지 아닌지 판별

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

2. int i = 1 ~ 입력 받은 정수까지 반복

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

    소수: 1과 자기 자신으로 나누어 떨어지는 수
    입력 받은 수가 i = 1, 2, 3, 4... 로 나누었을 때

    나머지가 0이면 소수

3. count 변수 생성

   자기 자신으로 나누어 떨어진다 = 약수이다

   면 카운트를 세겠다.

   count ++;

4. 출력
    count == 2? 약수가 2개 인가? = 소수이다

3.0.2. for + array

ForEx03 - 100개 크기 배열의 3배수만 저장

1. 100개 크기의 배열 선언, 생성

    int [  ] arr = new int[ 100 ];

2. i = index = 0부터 크기-1 미만까지 반복

3. 3의 배수 나타내는 변수 a 생성

4. 배열에 3을 더해가면서 저장함

    a += 3; ( a=3, 6, 9, 12....)

    arr[i] = a; 배열 값 = a

5. 3의 배수를 저장한 배열 출력

 

 

 

 

 

 

 

 

 

 

 

 

 

3.0.3. ForEx04 - 배열의 swap

x, y값 바꾸기

인덱스 0번을 랜덤하게 변경하기

 

임시 저장하는 temp 변수 생성

 

 

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

2. 인덱스 값을 랜덤으로 표현하는 ran 변수 생성

    ran 변수는 랜덤 1~9 값인데 범위 지정 중요

    인덱스 0값은 항상 변하는 값으로 고정

3. 임시 저장 temp 변수 생성 -> 인덱스 0값 넣기

4. 인덱스 0값 -> 1~9 인덱스 중 하나 랜덤값 넣기

5. 빈 랜덤값에 temp 저장된 값 넣기

6. 결과적으로 temp = 비어 있음

             9개의 인덱스 값 중 하나 x값 = 인덱스 0 값

             인덱스 0 값 = x값

 

 

 

 

 

 

 


3.0.4. for문 + for문 중복

  • 첫번째 for문 1번부터 실행 후 -> 두번째 for문으로 들어감 -> 두번째 for문 전체 실행
  • 나와서 첫번째 for문 2번부터 실행 -> 두번째 for문으로 들어감 -> 두번째 for문 전체 실행
  • 반복
  • 1-1, 1-2, 1-3, 1-4, 2-1, 2-2, 2-3, 2-4, 3-1, 3-2, 3-3, 3-4, 4-1, 4-2, 4-3, 4-4 순서로 실행됨
    첫번째 for문 - 두번째 for문

 

예시) 구구단

Quiz12 - 5 와 비교 ( 정수를 입력 받아서 구구단 출력 )

첫번째 for문 : 단수 출력

두번째 for문 : 1 ~ 9 출력


4. Quiz

4.0.1. Quiz12 - 1 - 7~100 중 7의 배수

1. int i = 7 ~ 100까지 하나씩 증가

2. if문 사용

    i % 7 == 0, i가 7의 배수이면

3. 출력

    print 구문 : i + 공백 출력해라

혹은

2. if문 사용

    i가 7씩 증가하면서

3. 출력

    print 구문: i + 공백 출력해라

 

Quiz12 - 2 - 1~200 중 9의 배수의 개수

1. int j = 1 ~ 200까지 하나씩 증가

2. j % 9 == 0, j가 9의 배수이면

3. 개수를 출력해야 하기 때문에

    count 변수 생성

4. 9의 배수이면 개수를 세라

    count++;

5. 출력 count

 

Quiz12 - 3 - 50~100 두 수 사이의 합

1. int k = 50 ~ 100까지 하나씩 증가

2. 합을 구해야 하기 때문에

    sum 변수 생성

3. k가 1씩 증가하면서 계속 자신(k)을 합하라

    sum += k;

4. 출력 sum

 

Quiz12 - 4 A~Z까지 출력(char 사용)

1. char A~Z를 그냥 출력하면 int로 자동 형변환 되므로 char로 바꿔줌

2. 변수 text 생성

3. char text = 'A' ~ 'Z' 까지 text 하나씩 증가

4. 출력 text 

Quiz12 - 5 수 입력을 받아 구구단 출력

1. 어떤 수(num)를 입력 받음 => scanner 사용

2. p = 1~9까지 하나씩 증가

3. num * p = int x 생성 ( //처럼 변수 생성 안하고 표시 형식만 바꿔줘도 됨 )

4. 출력 

 

4.0.2. Quiz13

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

2. int i = 인덱스를 0~길이 미만까지 지정, i 하나씩 증가

3. 랜덤값 생성 1~14 혹은 0~14 둘다 가능 (범위 지정)

    왜냐면 아래에서 인덱스를 정할때 처음 선택된 인덱스는 temp에 저장되고 나머지가 랜덤이 돌아가기 때문

4. ForEx04와 같이 변경되어 저장

5. 배열 출력 Arrays.toString

랜덤수 중 0~2인덱스 값을 새로운 배열에 담음

6. 길이가 3인 배열 선언, 생성

7. 인덱스 i = 0~길이 미만, i 하나씩 증가

8. 기존 배열의 인덱스 0,1,2를 새로운 배열의 인덱스 0,1,2에 담음. 오른쪽 -> 왼쪽으로

9. 배열 출력 Arrays.toString


오늘 하루

더보기

기억에 남는 부분

- 0 =< 인덱스  개수 < 길이 = arr.length

- for문의 사용 for( int i = 0; i <= 범위; i++) {        }

- 배열의 swap은 임시 저장하는 temp 변수를 생성해서 하나씩 넣어가면서 바꿔줌. 결국 temp = 0;

 

어려운 부분

- scanner 정수를 입력 받아 배열의 길이 정한 후, 배열 값을 scanner로 입력 하기 

- array 초기화 하고, 랜덤 값 넣어서 숫자 돌리기
 랜덤값 = 그냥 숫자값
 배열 안에 넣을 때 그 숫자값을 배열의 인덱스 값(arr[ran])으로 넣어서 배열의 값이 나오는 것임. 

- 소수인지 아닌지 판별, count를 어떻게 써야 하는지?

 

문제 해결 부분

- array + random 이해 완료

 

 

728x90
profile

원지의 개발

@원지다

250x250