반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/*
 * Author : Jeonghun Cho
 * Date : December 2, 2019
 */
 
public class Main {
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int number = Integer.parseInt(br.readLine());
        for(int i=1; i<=number; i++) {
            System.out.println(i);
        }
    }
}
Colored by Color Scripter
반응형

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 11021 A+B - 7 (Java)  (0) 2019.12.02
[백준] 2742 기찍 N (Java)  (0) 2019.12.02
[백준] 15552 빠른 A+B (Java)  (0) 2019.12.02
[백준] 1001 A-B (Java)  (0) 2019.11.26
[백준] 1000 A+B (Java)  (0) 2019.11.26
반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.io.*;
 
public class Test {
    public static void main(String[] agrs) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        try {
            int n = Integer.parseInt(br.readLine());
            for(int i=0; i<n; i++){
                String[] temp = br.readLine().split(" ");
                bw.write(Integer.parseInt(temp[0])+Integer.parseInt(temp[1])+"\n");
            }
            bw.flush();
        }catch(Exception e) {
            e.printStackTrace();
        }
    }
}
Colored by Color Scripter
반응형

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 2742 기찍 N (Java)  (0) 2019.12.02
[백준] 2741 N찍기 (Java)  (0) 2019.12.02
[백준] 1001 A-B (Java)  (0) 2019.11.26
[백준] 1000 A+B (Java)  (0) 2019.11.26
[백준] 10171 고양이 (Java)  (0) 2019.11.26
반응형

Java

 

안녕하세요. 후니입니다!

이번 포스팅에서는 메소드 오버로딩(Method Overloading)에 관하여 가볍게 알아보겠습니다.

 

오버로딩(Overloading)이란?

변수 선언시 변수 명이 중복되지 않게 선언한 것처럼 메소드도 마찬가지로 서로 구별될 수 있어야 합니다.

하지만 자바에서는 한 클래스 내에 이름이 같은 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 사용할 수 있습니다. 이처럼 한 클래스 내에 같은 이름의 메소드를 여러 개 정의하는 것을 메소드 오버로딩(Method Overloading)이라 부르며 간단하게는 오버로딩(Overloading)이라 부릅니다. 코드로 바로 확인해보겠습니다.

 

1
2
int apple;
int apple;

 

만약 위 코드처럼 apple이라는 이름을 가진 변수를 두 번 선언하면 오류가 발생합니다. 하지만 메소드는 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package smile;
 
public class Test {
    public static void main(String[] args) {
        Test t = new Test();
        t.something();
        t.something(10);
        t.something(10,10);
        t.something(10,10.1);
    } 
    void something() {
        System.out.println("something!");
    }
    void something(int i) {
        System.out.println(i);
    }
    void something(int i, int i2) {
        System.out.println(i+i2);
    }
    void something(int i, double d) {
        System.out.println(i+d);
    }
}
Colored by Color Scripter

 

이와 같이 Test클래스 내부에 something()이라는 이름을 가진 메소드가 4개가 있지만 매개변수가 각각 다르므로 사용이 가능합니다. 

 

오버로딩의 조건

1. 메소드의 이름이 같아야합니다.

 - 위 코드보시면 이름이 같은 something()이라는 메소드가 4개가 있지만 사용이 가능하죠?

 

2. 매개변수의 개수 또는 타입이 달라야 합니다.

 - 매개변수가 없는 메소드부터 1개, 2개가 있는 메소드가 있으며 개수가 같더라도 세 번째 something() 메소드는 두 개의 int형 타입이고 마지막 네 번째 something() 메소드는 int형과 double형이기 때문에 오버로딩이 가능합니다.

 

3. 매개변수의 개수와 타입은 같고 리턴타입이 다른 경우는 오버로딩이 성립되지 않습니다.

 - 메소드를 호출하는 부분에서는 호출 할 메소드의 이름과 매개변수 개수, 타입으로 구분짓기 때문에 return타입이 다르다고 해서 오버로딩이 성립되지는 않습니다.

 

그러면 오버로딩은 왜 사용할까?

오버로딩이 없을 경우 두 개의 매개변수를 받아서 정수+정수/ 정수+실수 / 실수+실수를 덧셈하는 add()메소드를 다음과 같이 정의해야합니다.

 

1
2
3
4
5
6
7
8
9
int addInteger(int first, int second){
    return first+second;
}
double addIntDouble(int first, double second){
    return first+second;
}
double addDouble(double first, double second){
    return first+second;    
}
Colored by Color Scripter
 

위 코드를 작성하는데 너무 귀찮았습니다. 가장 귀찮았던 이유는 모두 덧셈하는 기능이지만 타입이 다르다는 이유로 메소드의 이름을 짓기가 어려웠습니다. 다음은 오버로딩을 사용한 코드입니다. 

 

1
2
3
4
5
6
7
8
9
int add(int first, int second){
        return first+second;
}
double add(int first, double second){
        return first+second;
}
double add(double first, double second){
        return first+second;
}
Colored by Color Scripter

 

매개변수가 다르지만 add라는 메소드의 이름이 중복되도 괜찮기 때문에 각 각 메소드의 이름을 짓는 번거로움에서 벗어날 수도 있고 add라는 메소드 이름 하나만 기억하면 되므로 부담이 덜 된다는 장점이 있습니다.

 

반응형

+ Recent posts