inblog logo
|
πŸ‘¨πŸ»β€πŸ’»DriedPollack's Blog
    πŸ’‘Coding Testβ˜•Java

    [programmers] 두 수의 ν•© - Java

    두 개의 λ¬Έμžμ—΄ ν˜•νƒœμ˜ μ •μˆ˜ 'a'와 'b'κ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, μ΄λ“€μ˜ 합을 λ¬Έμžμ—΄λ‘œ λ°˜ν™˜ν•˜λŠ” solution ν•¨μˆ˜λ₯Ό μž‘μ„±ν•˜λŠ” λ¬Έμ œμž…λ‹ˆλ‹€. 'a'와 'b'의 κΈΈμ΄λŠ” 각각 1 이상 100,000 μ΄ν•˜μ΄λ©°, 숫자둜만 κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 'a'와 'b'λŠ” 0이 μ•„λ‹ˆλ©΄ 0으둜 μ‹œμž‘ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ Java의 BigDecimal 클래슀λ₯Ό μ‚¬μš©ν•˜μ—¬ 숫자λ₯Ό μ •λ°€ν•˜κ²Œ κ³„μ‚°ν–ˆμŠ΅λ‹ˆλ‹€. 이 클래슀의 단점은 느린 속도와 κΈ°λ³Έ νƒ€μž…λ³΄λ‹€ λΆˆνŽΈν•œ μ‚¬μš©λ²•μž…λ‹ˆλ‹€.
    Jan 20, 2024
    [programmers] 두 수의 ν•© - Java

    문제 μ„€λͺ…

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

    μ œν•œμ‚¬ν•­

    • 1 ≀ a의 길이 ≀ 100,000
    • 1 ≀ b의 길이 ≀ 100,000
    • a와 bλŠ” 숫자둜만 이루어져 μžˆμŠ΅λ‹ˆλ‹€.
    • a와 bλŠ” μ •μˆ˜ 0이 μ•„λ‹ˆλΌλ©΄ 0으둜 μ‹œμž‘ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

    μž…μΆœλ ₯ 예

    a
    b
    result
    "582"
    "734"
    "1316"
    "18446744073709551615"
    "287346502836570928366"
    "305793246910280479981"
    "0"
    "0"
    "0"

    μž…μΆœλ ₯ 예 μ„€λͺ…

    μž…μΆœλ ₯ 예 #1
    • 예제 1번의 a, bλŠ” 각각 582, 734이고 582 + 734 = 1316μž…λ‹ˆλ‹€. λ”°λΌμ„œ "1316"을 return ν•©λ‹ˆλ‹€.
    μž…μΆœλ ₯ 예 #2
    • 예제 2번의 a, bλŠ” 각각 18446744073709551615, 287346502836570928366이고 18446744073709551615 + 287346502836570928366 = 305793246910280479981μž…λ‹ˆλ‹€. λ”°λΌμ„œ "305793246910280479981"을 return ν•©λ‹ˆλ‹€.
    μž…μΆœλ ₯ 예 #3
    • 예제 3번의 a, bλŠ” 각각 0, 0이고 0 + 0 = 0μž…λ‹ˆλ‹€. λ”°λΌμ„œ "0"을 return ν•©λ‹ˆλ‹€.

    solution.java

    import java.math.*; class Solution { public String solution(String a, String b) { BigDecimal x = new BigDecimal(a); BigDecimal y = new BigDecimal(b); return "" + x.add(y); } }
     

    핡심 ν‚€μ›Œλ“œ

    • 예제 1번 같은 경우 intλ‚˜ long으둜 ν‘œν˜„ν•  수 μžˆλŠ” λ²”μœ„ λ‚΄μ˜ κ°’μ΄λ―€λ‘œ 일반적인 연산이 κ°€λŠ₯ν•˜λ‹€.
    • ν•˜μ§€λ§Œ 예제 2번 같은 경우 long으둜 ν‘œν˜„ν•  수 μžˆλŠ” κ°’μ˜ λ²”μœ„λ₯Ό λ²—μ–΄λ‚œλ‹€.
      • λ”°λΌμ„œ Javaμ—μ„œ μ œκ³΅ν•˜λŠ” BigDecimal 클래슀λ₯Ό 톡해 숫자λ₯Ό μ •λ°€ν•˜κ²Œ 계산해야 ν•œλ‹€.
      • BigDecimal의 단점은 느린 속도, κΈ°λ³Έ νƒ€μž…λ³΄λ‹€ λΆˆνŽΈν•œ μ‚¬μš©λ²•μ΄λ‹€.
     

    κ²°λ‘ !

    ν•΄λ‹Ή 문제λ₯Ό ν’€λ©΄μ„œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ‹€κ°€ ν‘œν˜„ν•  수 μžˆλŠ” κ°’μ˜ λ²”μœ„λ₯Ό λ²—μ–΄λ‚˜λŠ” 수의 계산에 어렀움을 κ²ͺμ—ˆκ³ , 이λ₯Ό BigDecimal 클래슀λ₯Ό 톡해 ν•΄κ²°ν•  수 μžˆμ—ˆλ‹€.
     
    Share article

    πŸ‘¨πŸ»β€πŸ’»DriedPollack's Blog

    RSSΒ·Powered by Inblog