알고리즘/코드트리

코드트리 | 객체/폭탄해제 [자바 java]

발빠진 쥐 2024. 8. 9. 12:26

매개변수와 인자란?

 

매개변수는 메소드, 또는 생성자를 선언할 때, 괄호 안에 적으며,

어떤 입력값이 들어올지 값의 형태를 정의해준다.

인자는 메소드, 또는 생성자를 호출할때, 괄호 안에 적으며,

미리 선언해 두었던 매개변수에 값을 대입해준다.

 

매개변수는 실제로 값이 존재하지는 않고, 어떤 형태로 입력값이 들어올것인지를 정의해 준다.

인자는 매개변수에 대입되는 실제로 메모리에 할당되어 있는 변수이다.

즉, 매개변수와 인자의 차이는 실제로 메모리에 할당되어 있느냐, 없느냐의 차이이다.

 

숫자 두 개를 입력받아, 두 숫자의 합을 리턴하는 메소드를 만든다고 생각해보자.

public int sum(int a, int b) {

return a+b;

}

이렇게 메소드를 선언할때 int형 변수 두 개를 받겠다고 괄호 안에 적은 int a와 int b가 매개변수이다.

그럼, 이 메소드를 호출해서 숫자 3과 숫자 5를 더해보자.

sum(3, 5)

이렇게 메소드를 호출하여, 매개변수에 각각의 값을 대입했다.

 3과 5가 바로 인자이다.

 

출처

https://salix97.tistory.com/5

 

[JAVA] 자바 - 매개변수, 인자란 무엇인가?

1. 매개변수(parameter) 매개변수의 '매개'와 '변수'를 사전에서 찾아보면 다음과 같다. 매개 : 둘 사이에서 양편의 관계를 맺어 줌 변수 : 어떤 상황의 가변적 요인, 어떤 관계나 범위 안에서 여러 가

salix97.tistory.com

 

 

 

폭탄 해제

10XP
공유하기
쉬움
정답률 93% · 제출 1,507회 · 예상 소요 시간 8분
15아쉬워요
1 StarEmpty내 리스트에 추가

필요한 "해제 코드", 끊어야하는 "선의 색", "특정 초"가 주어지면 입출력 예제 같이 출력하는 프로그램을 작성해보세요. 단, c언어의 경우 구조체를, 다른 언어의 경우 class를 이용하여 문제를 해결해주세요.

입력 형식

첫 번째 줄에 소문자 알파벳으로 이루어진 문자열인 "해제 코드", R, G, B중 하나인 "선의 색", "특정 초"가 공백을 사이에 두고 주어집니다.

  • 1 ≤ "해제 코드"의 길이 ≤ 10
  • 1 ≤ "특정 초" ≤ 60

출력 형식

아래 입출력 예제와 같이 출력합니다.

입출력 예제

예제1

입력:

branch G 34
 

출력:

code : branch
color : G
second : 34
 
 

제한

시간 제한: 1000ms
메모리 제한: 80MB

 

 

 

import java.util.Scanner;

// Bomb 정보를 나타내는 클래스 선언
class Bomb{
   String code;
   char color;
   int second;


    //String , char, Int 같은 매개변수타입 붙여줬어야 했음
   public Bomb(String code,char color,int second){
    this.code = code;
    this.color = color;
    this.second = second;
    //this를 붙여 인스턴스 변수 초기화 ..?
   }
}

public class Main {
   public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        //객체를 생성하기 전 변수를 사용자에게 입력 받고 
        //그 값을 생성자에 전달하여 객체를 생성
        String code = sc.next();
        char color = sc.next().charAt(0);
        int second = sc.nextInt();

        Bomb b = new Bomb(code,color,second);


        System.out.println("code : " + b.code);
        System.out.println("color : " + b.color);
        System.out.println("second : " + b.second);



       
    }
}

 

 

code color second 변수를 main 메서드 안에다 선언해야하는 이유

 

  • 지역 변수(Local Variables):
    • 변수를 main 메서드 내에서 선언하면, 이 변수는 main 메서드의 지역 변수가 됩니다.
    • 즉, 이 변수는 main 메서드가 실행되는 동안만 사용할 수 있으며, 메서드가 종료되면 메모리에서 해제됩니다.
    • 지역 변수로 선언된 변수는 해당 메서드 내에서만 접근할 수 있어, 코드의 예측 가능성을 높이고, 불필요한 메모리 사용을 방지할 수 있습니다.
  • 인스턴스 변수(Instance Variables):
    • 반대로, 클래스 수준에서 선언된 변수(즉, main 메서드 바깥에서 선언된 변수)는 해당 클래스의 인스턴스가 존재하는 동안 메모리에 유지됩니다.
    • 이러한 변수는 클래스의 모든 메서드에서 접근할 수 있으며, 클래스가 커질수록 변수가 여러 메서드에 의해 변경될 가능성이 있어 관리가 어려워질 수 있습니다.