[programmers] 두 수의 ν•© - Java

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

문제 μ„€λͺ…

0 μ΄μƒμ˜ 두 μ •μˆ˜κ°€ λ¬Έμžμ—΄ ab둜 μ£Όμ–΄μ§ˆ λ•Œ, 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번의 abλŠ” 각각 582, 734이고 582 + 734 = 1316μž…λ‹ˆλ‹€. λ”°λΌμ„œ "1316"을 return ν•©λ‹ˆλ‹€.
μž…μΆœλ ₯ 예 #2
  • 예제 2번의 abλŠ” 각각 18446744073709551615, 287346502836570928366이고 18446744073709551615 + 287346502836570928366 = 305793246910280479981μž…λ‹ˆλ‹€. λ”°λΌμ„œ "305793246910280479981"을 return ν•©λ‹ˆλ‹€.
μž…μΆœλ ₯ 예 #3
  • 예제 3번의 abλŠ” 각각 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