본문 바로가기
Java

[Java] Java로 배우는 자료구조 : 변수, 배열, 반복문

by 꿈나무 김땡땡 2019. 12. 16.
  • 출처 : inflearn

  • 클래스 이름 바꾸기 : src > class > 오른쪽 버튼 클릭 > Refactor

1. 변수 선언하기

// 클래스 밖에 변수 선언은 불가
public class Hello {

    // 함수 밖에 변수 선언 : static
    static int num;
    public static void main(String [] args) {
        // 함수 안에 변수 선언 : static 선언 안해도 됨
        int anotherNum = 5;
        num = 2;

        // print out some information
        
        // 숫자 + 숫자
        System.out.println(num + anotherNum);
        
        // 문자 + 숫자
        System.out.println("num: " + num);
        System.out.println("anotherNum: " + anotherNum);
    }
}

 

2. 변수에 값 저장하기

(1) 변수 타입 : Int

import java.util.Scanner;

class Code2 {
    public static void main(String [] args) { int number = 123;
    	// keyboard라는 스캐너를 만든다. System.in : 키보드
        Scanner keyboard = new Scanner(System.in); 
        System.out.print("Please enter an integer: ");
        // keyboard로부터 정수를 입력 받아 변수 input에 저장한다.
        int input = keyboard.nextInt(); 
        
        if(input == number) {
            System.out.println("Numbers match! :-)");
        } else {
            System.out.println("Numbers do not match! :-(");
        }
        
        // scanner 다 썼으면 닫아준다.
        keyboard.close();
    }
}

 

(2) 변수 타입 : String

import java.util.Scanner;

class Code3 {
    public static void main(String [] args) {
        String str = "Hello, world";
        // input 변수 초기화
        String input = null;
        Scanner keyboard = new Scanner(System.in);
        System.out.print("Please type a string: ");

	// 공백 기준 하나의 단어(문자열)를 입력
        input = keyboard.next(); 

	// str == input 으로는 String 변수는 비교 불가
        if(str.equals(input)) {
            System.out.println("Strings match! :-)");
        } else {
            System.out.println("Strings do not match! :-(");
        }

        keyboard.close();
    }
}
  • str == input, 즉 "=="로 비교하는 것은 primitive type 변수만 가능!

  • 그 외에는 str.equals(input) 으로 비교

import java.util.Scanner; 

class Code4 {
    public static void main(String[] args) {
        String name = null;
        int age;
        String gender;

        Scanner keyboard = new Scanner(System.in);
        System.out.print("Please type your name and your age and your gender: ");

        name = keyboard.next();
        age = keyboard.nextInt();
        gender = keyboard.next();


        if (gender.equals("male")) {
            System.out.println(name + ", you’re " + age + " years old man.");
        } else if (gender.equals("female")) {
            System.out.println(name + ", you’re " + age + " years old woman.");
        } else {
            System.out.println("Hmm...interesting.");
        }
    }
}
  • 입력값 예시 : Kwon 32 male

 

3. 배열 만들기

(1) int [] 배열 만들기

class Code5 {
    public static void main(String [] args) {
    // declare the array : 정수형 배열 선언
    int [] grades;

    // allocate memory for 5 indices : 배열 만들기
    grades = new int[5];
    // int [] grades = new int[5]; 로 써도 ok!


    // assign some values to the array
    grades[0] = 100;
    grades[1] = 76;
    grades[2] = 92;
    grades[3] = 95;
    grades[4] = 14;

    // print out each value
    System.out.println(grades[0]);
    System.out.println(grades[1]);
    System.out.println(grades[2]);
    System.out.println(grades[3]);
    System.out.println(grades[4]);
    } 
}

 

(2) for 문을 사용해서 반복문 결과를 출력하기

public class Code06 {
    public static void main(String[] args) {
        int [] grades = new int[5];

        // assign some values to the array
        grades[0] = 100;
        grades[1] = 76;
        grades[2] = 92;
        grades[3] = 95;
        grades[4] = 14;

        for(int i=0; i < grades.length; i++) {
            System.out.println("Grade " + (i+1) + ": " + grades[i]);
        }
    }
}

 

(3) while 문을 사용해서 반복문 결과를 출력하기

public class Code07 {
    public static void main(String[] args) {
        int [] grades = new int[5];

        // assign some values to the array
        grades[0] = 100;
        grades[1] = 76;
        grades[2] = 92;
        grades[3] = 95;
        grades[4] = 14;

        int i = 0;
        while (i < grades.length) {
            System.out.println("Grade " + (i+1) + ": " + grades[i]);
            i++;
        }
    }
}

 

(4) 사용자로부터 n 개의 숫자를 입력 받아서, 합과 최대값을 출력하기

import java.util.Scanner;

public class Code08 {
    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);

        // 입력 받을 정수의 개수 정하기
        int n = kb.nextInt();
        // n개의 데이터를 가진 data 라는 배열 만들기
        int [] data = new int[n];

        for (int i=0; i<n; i++) {
            data[i] = kb.nextInt();
        }
        kb.close();

        int sum=0, max = data[0];
        for (int i=0; i<n; i++) {
            sum += data[i]; // sum = sum + data[i]와 동일

            if (data[i] > max) {
                max = data[i];
            }
        }

        System.out.println("The sum is " + sum + " and the maximum is " + max);
    }
}

 

4. 반복문

(1) 1부터 100,000 사이의 소수 출력

public class Code10 {
    public static void main(String[] args) {
        for (int n = 2; n <= 100000; n++) {
            boolean isPrime = true;
            for (int i = 2; i*i <= n && isPrime; i++) { // i의 제곱이 n보다 작거나 같다
                if (n % i == 0) {
                    isPrime = false;
                }
                if (isPrime) {
                    System.out.println(n);
                    break;
                }
            }

        }
    }
}

 

(2) 중복된 정수 쌍 출력

  • 사용자로부터 n개의 정수를 입력 받아 배열에 저장한다.
  • 중복된 정수 쌍의 개수를 출력한다.
import java.util.Scanner;

public class Code11 {
    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();
        int [] data = new int[n];
        for (int i=0; i<n; i++) {
            data[i] = kb.nextInt();
        }
        kb.close();

        int count = 0;
        int j;
        for (int i=0; i<n; i++) {
            for (j=i+1; j<n; j++) { // i<j
                if(data[i] == data[j]) {
                        count++;
                }
            }
        }
        System.out.println(count);

    }
}

 

(3) 합의 최대값 출력

  • 사용자로부터 n개의 정수를 입력 받아 배열에 저장한다.
  • 정수를 더한 값 중 최대값을 출력한다.
import java.util.Scanner;

public class Code12 {
    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();
        int [] data = new int[n];
        for (int i=0; i<n; i++) {
            data[i] = kb.nextInt();
        }
        kb.close();

        int maxSum = 0;
        for (int i=0; i<n; i++) {
            for (int j=0; j<n; j++) {
                int sum = 0;
                for (int k=i; k<=j; k++) {
                    sum += data[k];
                    if (sum > maxSum) {
                        maxSum = sum;
                    }
                }
            }
        }
        System.out.println("The max sum is " + maxSum);
    }
}

 

 

5. 정렬

(1) 사용자로부터 n개의 정수를 입력받아 오름차순으로 정렬

import java.util.Scanner;

public class Code14 {
    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();
        int [] data = new int[n];

        for (int i=0; i<n; i++) {
            data[i] = kb.nextInt();
        }
        kb.close();

        // bubble sort
        for (int i=n-1; i>0; i--) {
            for (int j = 0; j < i; j++) {
                if (data[j] > data[j + 1]) {
                    // swap data[j] & data[j+1]
                    int tmp = data[j];
                    data[j] = data[j + 1];
                    data[j + 1] = tmp;
                }
            }
        }

        System.out.println("Sorted Data");
        for (int i=0; i<n; i++) {
            System.out.println(data[i]);
        }

    }
}
  • bubble sort : data[0] ~ data[i] 중에서 최대값을 data[i] 위치로 몰아가는 일

(2) 사용자로부터 n개의 정수를 입력받아 오름차순으로 정렬하여 출력

 

 

 

'Java' 카테고리의 다른 글

[JAVA] BOJ_2739  (0) 2019.11.22
[JAVA] BOJ_2741  (0) 2019.11.22
[JAVA] Exception Handling  (0) 2019.11.20

댓글