728x90

 

Integer.valueOf(String)

  • 반환 타입: Integer 객체
  • 설명: Integer.valueOf(String)는 문자열을 Integer 객체로 변환합니다. 이 메서드는 내부적으로 Integer 객체를 생성하거나, 이미 생성된 객체를 캐싱하여 반환할 수 있습니다. 따라서 이 메서드는 Integer 객체를 반환하기 때문에 자동 박싱(autoboxing)이 발생합니다.
  • 캐싱: Integer.valueOf(int)는 -128부터 127까지의 값을 캐싱합니다. 이 범위 내의 값들은 동일한 객체를 재사용합니다.
Integer intValue = Integer.valueOf("123");

 

Integer.parseInt(String)

  • 반환 타입: 기본 타입 int
  • 설명: Integer.parseInt(String)는 문자열을 기본 타입 int로 변환합니다. 이 메서드는 문자열을 숫자로 파싱하여 직접 int 타입으로 반환하기 때문에, 객체 생성이나 캐싱과 관련이 없습니다.
int intValue = Integer.parseInt("123");
 

 

요약

  • Integer.valueOf(String)는 Integer 객체를 반환하고, 캐싱 메커니즘을 사용할 수 있습니다. 반환 타입은 객체(Integer)입니다.
  • Integer.parseInt(String)는 기본 타입 int를 반환하며, 캐싱 메커니즘이 없습니다. 반환 타입은 기본 타입(int)입니다.

 

사용 예시

public class Main {
    public static void main(String[] args) {
        String str = "123";
        
        // Integer.valueOf(String) 사용
        Integer integerValue = Integer.valueOf(str);
        System.out.println("Integer.valueOf: " + integerValue); // Integer 객체 반환

        // Integer.parseInt(String) 사용
        int intValue = Integer.parseInt(str);
        System.out.println("Integer.parseInt: " + intValue); // 기본 타입 int 반환
    }
}

 

결론

  • Integer.valueOf(String)는 Integer 객체를 반환하고, 캐싱 메커니즘을 통해 메모리 효율성을 향상시킬 수 있습니다.
  • Integer.parseInt(String)는 기본 타입 int를 반환하며, 메모리 효율성 측면에서 조금 더 가볍습니다.

두 메서드 모두 문자열을 정수로 변환하는 데 유용하지만, 반환 타입과 내부 동작 방식의 차이로 인해 특정 상황에서 더 적합한 메서드를 선택할 수 있습니다.

728x90

DFS 는 완전 탐색

BFS 는 최단 거리 찾기에 적합하다.

728x90

최대 공약수와 최대 공배수의 개념

1) 공약수

두 정수의 공통 약수를 공약수라고 한다.
두 정수 ab에 대하여 e가 a의 약수이면서 b의 약수일 때 e를 ab의 공약수라고 한다.

2) 최대공약수

두 정수의 공약수 중 가장 큰 것을 최대공약수라고 한다.
또한 최대공약수는 다음의 성질을 만족한다.
ab의 최대공약수가 g이다. ⇔ a = ga′, b = gb′이면 a′, b′는 서로소이다.

3) 공배수

두 정수의 공통 배수를 공배수라고 한다.
두 정수 ab에 대하여 c가 a의 배수이면서 b의 배수일 때 c를 ab의 공배수라고 한다.

4) 최소공배수

양의 공배수 중 가장 작은 것을 최소공배수라고 한다.

[네이버 지식백과] 최대공약수와 최소공배수 (통합논술 개념어 사전, 2007. 12. 15., 한림학사)

 

코드

내가 이것을 보고 생각했을 때 짠 코드이다.

class Solution
{
	public static void main(String args[]) throws Exception
	{
		int num1 = 1250;
		int num2 = 80;
        	int g = gcd(num1, num2, num2);
        	int l = (num1*num2)/g;
		System.out.println("1250과 80의 GCD : "+g);
		System.out.println("1250과 80의 LCM : "+l);
	}
    public static int gcd(int num1, int num2, int n)
    {
        if(num1%n == 0 && num2%n == 0)
        {
            return n;
        }
        return gcd(num1, num2, n-1);
    }
}

 

유클리드 호제법

정의
두 양의 정수 A, B (A > B)에 대하여 A이라 하면,
의 최대 공약수는 B의 최대 공약수와 같다.
즉,
이라면, A의 최대 공약수는 B가 된다.

여기서  Q = A/B(A를 B로 나눈 몫), R = A%B (나머지) 이다.

 

예시

 1250과 580의 최대공약수를 구하라.

  • A = B X Q + R
  • 1250 = 580 X 2 + 90
  • 580 = 90 X 6 + 40
  • 90 = 40 X 2 + 10
  • 40 = 10 X 4

4번째에서 R = 0 가 되니까, 직전의 R 인 10이 1250과 580의 최대공약수가 됩니다.

 

코드

class Solution
{
	public static void main(String args[]) throws Exception
	{
		int num1 = 1250;
		int num2 = 80;
        	int g = gcd(num1, num2);
        	int l = (num1*num2)/g;
		System.out.println("1250과 80의 GCD : "+g);
		System.out.println("1250과 80의 LCM : "+l);
	}
    public static int gcd(int num1, int num2)
    {
        if(num1%num2 == 0)
        {
            return num2;
        }
        return gcd(num2, num1%num2);
    }
}

다음에 또 봐요

'프로그래밍 공부 > 알고리즘 - JAVA' 카테고리의 다른 글

Integer.valueOf(String) VS Integer.parseInt(String)  (0) 2024.05.25
메모  (0) 2023.02.26

+ Recent posts