Contents

두 수의 ν•©(with.Java)

   Nov 14, 2023     2 min read

β€œλ‘ 수의 합” λ¬Έμ œμ— λŒ€ν•˜μ—¬ μ•Œμ•„λ³Έ κΈ€μž…λ‹ˆλ‹€.

μ½”λ”© ν…ŒμŠ€νŠΈ 문제λ₯Ό ν’€λ©°, ν’€μ—ˆλ˜ λ¬Έμ œμ— λŒ€ν•œ νšŒκ³ μ™€ λ‹€λ₯Έ 풀이 방법을 μ•Œμ•„λ³΄λ©°, μ•Œμ•„κ°€κ³ μž ν•©λ‹ˆλ‹€.

λ¬Έμ œμ— λŒ€ν•΄ λ¨Όμ € μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

문제

0 μ΄μƒμ˜ 두 μ •μˆ˜κ°€ λ¬Έμžμ—΄ a, b둜 μ£Όμ–΄μ§ˆ λ•Œ, a + b의 값을 λ¬Έμžμ—΄λ‘œ return ν•˜λŠ” solution ν•¨μˆ˜λ₯Ό μž‘μ„±ν•΄ μ£Όμ„Έμš”.

μž…μΆœλ ₯ μ˜ˆμ‹œ
abresult
β€œ582β€β€œ734β€β€œ1316”
β€œ18446744073709551615β€β€œ287346502836570928366β€β€œ305793246910280479981”
β€œ0β€β€œ0β€β€œ0”

λ¬Έμ œμ— λŒ€ν•œ λ‚˜μ˜ 풀이

class Solution {
    public String solution(String a, String b) {
        String answer = "";
        int intA = Integer.parseInt(a);
        int intB = Integer.parseInt(b);
        int sum = intA + intB;
        answer = String.valueOf(sum);
        return answer;
    }
}
풀이 μ„€λͺ…

μ²˜μŒμ—” Integer 데이터 νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•˜μ—¬ λ”ν•˜κ³  λ‹€μ‹œ λ¬Έμžμ—΄λ‘œ λ³€ν™˜ν•˜μ—¬ λ°˜ν™˜ν•˜λŠ” μ½”λ“œλ₯Ό μž‘μ„±ν–ˆμœΌλ‚˜ Testcase 2번의 18446744073709551615 ν•΄λ‹Ή μ •μˆ˜κ°€ λ„ˆλ¬΄ 큰 μˆ˜μ΄κΈ°μ— ν†΅κ³Όν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

이후 Integer 데이터 νƒ€μž…μ˜ 2배의 크기λ₯Ό 가진 long을 μ‚¬μš©ν•˜μ—¬ 문제λ₯Ό ν’€μ—ˆμŠ΅λ‹ˆλ‹€.

long을 ν™œμš©ν•œ 풀이

class Solution {
    public String solution(String a, String b) {
        String answer = "";
        long longA = Long.parseLong(a);
        long longB = Long.parseLong(b);
        long sum = longA + longB;
        answer = String.valueOf(sum);
        return answer;
    }
}

κ·ΈλŸ¬λ‚˜ long 데이터 νƒ€μž…μ„ μ‚¬μš©ν•΄λ„ Testcase 2번의 18446744073709551615을 톡과할 수 μ—†μ—ˆμŠ΅λ‹ˆλ‹€.

λ„ˆλ¬΄ 큰 수이기 λ•Œλ¬Έμž…λ‹ˆλ‹€.

이에 BigInteger 클래슀λ₯Ό μ‚¬μš©ν•΄ μ•„μ£Ό 큰 μ •μˆ˜ 값을 μ²˜λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€.

BigIntegerλ₯Ό ν™œμš©ν•œ 풀이

import java.math.BigInteger;

public class Solution {
    public String solution(String a, String b) {
        String answer = "";
        BigInteger bigA = new BigInteger(a);
        BigInteger bigB = new BigInteger(b);
        BigInteger sum = bigA.add(bigB);
        answer = sum.toString();
        return answer;
    }
}

μœ„ μ½”λ“œμ—μ„œλŠ” μž…λ ₯된 두 λ¬Έμžμ—΄μ„ BigInteger 객체둜 λ³€ν™˜ν•˜κ³ , add λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ λ”ν•©λ‹ˆλ‹€.

그런 λ‹€μŒ toString λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ κ²°κ³Όλ₯Ό λ¬Έμžμ—΄λ‘œ λ³€ν™˜ν•˜μ—¬ λ°˜ν™˜ν•©λ‹ˆλ‹€.

μ΄λ ‡κ²Œ ν•˜λ©΄ μ•„μ£Ό 큰 μ •μˆ˜ 값을 μ •ν™•ν•˜κ²Œ μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.