아요 개발 일기

[프로그래머스]Level 1. 두 정수 사이의 합 본문

Algorithms/문제 풀이

[프로그래머스]Level 1. 두 정수 사이의 합

소진이 2023. 1. 16. 10:38

안녕하세용

오늘은 두 정수 사이의 합을 풀어보았습니다!! 


문제

 

내가 푼 풀이

 

설명하기 민망할정도로 간단한 풀이지만 해보겠습니다..ㅎㅎ

수를 오름차순으로 정리해야해서 min과 max를 구해줬어요!

for in 문을 사용해서 min 값부터 max 값가지 result 값에 저장해 주었습니다!! 

 


좋다고 생각한 풀이

 

return Int64(a + b) * Int64(max(a, b) - min(a, b) + 1) / Int64(2)

풀이도 좋구, min max에 파라미터 값으로 두가지가 들어가는건 본 적이 없는 것 같아서 궁금해서 데리고 왔어요!

 

 

짠 공식 문서를 찾아왔어요! 

해석하자면, 비교 가능한 두 값 중에 작은 값을 반환합니다. 라고 하내요?? 

max(_:_:)는 당연히 큰 값을 반환하겠죠??

아! 위의 설명들을 보니 공식들의 뜻하는 바가 바로 이해가 됩니다!!

 

자세히 살펴봅시다!

return Int64(a + b) * Int64(max(a, b) - min(a, b) + 1) / Int64(2)

 

그러니까.. 만약, a = 7 b = 2라고 한다면

(10 * (8-2 +1 )) / 2
(10 * 7) / 2
70 / 2 = 35

계산식이 재밌네요??!!

 

제가 분석해보니까..

(a + b) * 더하는 수들의 갯수 / 2 이더라구요

저희 어릴때 끝 값씩 더해서 결과 값을 도출해내는 방식 있었죠?

 

이거!!

이 계산식을 사용해서 푼 것 같아요

양 끝 값을 더해서 수의 갯수를 곱하고 2로 나누면 계산이 됩니다! 

간단하니 아주 좋은 풀이네요!


속도 비교

내가 푼 풀이  속도

 

좋다고 생각한 풀이 속도

 

확실히.. 좋다고 생각한 풀이의 속도가 훨씬 좋네요.....ㅎㅎㅎㅎ.. 

아직 멀었당!

 

혹시 틀린 부분이나 더 좋은 풀이가 있다면 댓글로 적어주세용! :D