2023.07.26 - java 문법 종합반(3주차) + 알고리즘 (1)

mjjin·2023년 7월 25일
0

Java 문법 종합반

목록 보기
3/8

클래스(Class)

<클래스 설계>

클래스란 객체 생성을 위한 설계도이다.

클래스가 가장 중요한 개념 중 하나인 이유는
자바는 객체지향 프로그래밍 언어이기 때문이다.

객체지향 프로그래밍이란
현실에서 제품을 생산하기 위한 부품들을 만들어 하나씩 조립해서 완성하는 것 처럼
소프트웨어 또한 필요한 부품들을 만들고, 하나씩 조립해서 프로그램을 완성할 수 있는 기법이다.

소프트웨어에서 필요한 부품을 '객체'라고 표현하며
객체(Object)의 뜻은 다음과 같이 정의할 수 있다.

- 실제로 존재하는 것. 사물 또는 개념
- 클래스에 정의된 내용대로 메모리에 생성된 것

필요한 부품을 만들기 위해서는 설계도가 필요한데,
그 설계도의 역할을 하는 것이 클래스이다.

클래스는 필드(field), 생성자(constructor), 메서드(method)로 구성되며
클래스를 만드는 방법은 크게 4가지 STEP으로 이루어진다.

  1. 클래스 선언
  2. 필드 정의
  3. 생성자 정의
  4. 메서드 정의

<클래스의 구성 멤버>

- 필드(Field)

객체의 데이터를 저장하는 역할

예시코드)

public class Car {
    String company; //자동차 회사
    String modal; //자동차 모델
    String color; //자동차 색
    double price; //자동차 가격
    double speed; //자동차 속도, km/h
    char gear; //기어 상태 (P, R, N, D)
    boolean lights; //자동차 조명의 상태
    }

- 생성자(Constructor)

객체를 초기화 하는 역할

예시코드)

    public Car () {
        
    }

처음 객체가 생성될 때 어떤 로직을 수행해야 하며,
어떤 값이 필수로 들어와야 하는지 정의한다.
(기본 생성자는 생략이 가능하다.)

- 메서드

특정 작업을 수행하기 위한 명령문의 집합

예시코드)

리턴타입 메서드명(매개변수, ...) {
			 실행할 코드 작성
}

double gasPedal(double kmh) {
    speed = kmh;
    return speed;  //
}

알고리즘 문제풀이

<오늘의 문제>

알고리즘 문제 출처 : 프로그래머스 스쿨

  1. 두 수의 합
  2. 두 수의 차
  3. 두 수의 곱
  4. 몫 구하기
  5. 나머지 구하기
  6. 나이 출력
  7. 숫자 비교하기
  8. 각도기
  9. 짝수의 합

1. 두 수의 합

class Solution {
    public int solution(int num1, int num2) {
        int answer = 0;
        if((-50000 <= num1 && num1 <= 50000) && (-50000 <= num2 && num2 <= 50000)) {
            answer = num1 + num2;
            return answer;
        }
        return answer;
    }
}

2. 두 수의 차

class Solution {
    public int solution(int num1, int num2) {
        int answer = 0;
        if((-50000 <= num1 && num1 <= 50000) && (-50000 <= num2 && num2 <= 50000)) {
            answer = num1 - num2;
            return answer;
        }
        return answer;
    }
}

3. 두 수의 곱

class Solution {
    public int solution(int num1, int num2) {
        int answer = 0;
        if((-50000 <= num1 && num1 <= 50000) && (-50000 <= num2 && num2 <= 50000)) {
            answer = num1 * num2;
            return answer;
        }
        return answer;
    }
}

4. 몫 구하기

class Solution {
    public int solution(int num1, int num2) {
        int answer = 0;
        if((-100 <= num1 && num1 <= 100) && (-50000 <= 100 && num2 <= 100)) {
            answer = num1 / num2;
            return answer;
        }
        return answer;
    }
}

5. 나머지 구하기

class Solution {
    public int solution(int num1, int num2) {
        int answer = 0;
        if((-100 <= num1 && num1 <= 100) && (-100 <= num2 && num2 <= 100)) {
            answer = num1 % num2;
            return answer;
        }
        return answer;
    }
}

6. 나이출력

class Solution {
    public int solution(int age) {
        int year = 2022;
        int answer = 0;
        
        if (0<age && age<=120) {
            answer = (year-age) +1;
            return answer;
        }
        
        return answer;
    }
}

7. 숫자 비교하기

class Solution {
    public int solution(int num1, int num2) {
        int answer=0;
        
        if((num1 >= 0 && num1<= 10000) && (num2 >= 0 && num1<= 10000)){
            if ((num1 - num2) == 0) {
                answer = 1;
                return answer;
            }   
        } 
        answer = -1;
        return answer;
    }
}

8. 각도기

class Solution {
    public int solution(int angle) {
        int answer = 0;
        if (0 < angle && angle <= 180) {
            if (0 < angle && angle < 90) {
                answer = 1;
            } else if (angle == 90) {
                answer = 2;
            } else if (90 < angle && angle < 180) {
                answer = 3;
            } else if (angle == 180){
                answer = 4;
            }
        return answer;    
        }
        return answer;
    }
}

9. 짝수의 합

class Solution {
    public int solution(int n) {
        int answer = 0;
        if (n > 0 && n <= 1000 ) {
            while (n > 0) {
                if (n % 2 == 0) {
                    answer += n;
                }
                n--;
            }
            return answer;
        }
        return answer;
    }
}

IDE에서 테스트를 위해 작성해본 전체 코드 (예시)

import java.util.Scanner;

class Solution {
    public int solution(int num1, int num2) {
        int answer = num1 + num2;
        return answer;
    }
}

public class Test1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num1 = sc.nextInt();
        int num2 = sc.nextInt();

        Solution inputInt = new Solution();
        System.out.println(inputInt.solution(num1, num2));
    }
}

문제 풀이 후기

아직 1일차 문제라 그런지, 다행히 크게 어려운 문제는 없었지만
너무 즐겁게 문제를 풀었다.

문제를 다 푼 후, 다른 사람들이 작성한 코드들의
많은 기발한 아이디어들과 깔끔한 코드 작성을 보는 것만으로도
좋은 참고가 되었다.

내일 문제 풀이는 조금 더 깔끔한 코드로 작성 할 수 있었으면 좋겠다!

0개의 댓글