Algorithm) Codekata_Day 17

김명성·2021년 8월 10일
0

Algorithm

목록 보기
18/61
post-thumbnail

❓ Question

들어 온 숫자 배열이 주식 장이라고 했을 때, 가장 차익이 높은 수는?

📝 My Solution

먼저 가장 낮은 가격 일때를 찾기 위해 Math.min 메소드를 이용했다.
그 후 주식 장이기 때문에 그 앞에 들어온 숫자를 잘라내 버렸다.

남아있는 배열에서 가장 큰 수를 뽑아내
큰 수에서 작은 수를 빼서 결과값을 냈다.


▪️ Solution review

주식장이라고 생각하니 머리가 이전보다 빠르게 돌아가는 경험을 했다..ㅋㅋ
아무튼 이렇게 답을 내고 정답을 확인해 봤는데 모두 정답이었다.
근데 이 코드에는 한가지 허점이 있었다.

prices = [3,10,1,6,5,3,2]

이런식으로 들어온다고 한다면 가장 수익이 높은 구간은
3에 사서 10에 팔아 7의 차익을 남겨야 하는데,
내가 짠 코드는 1에 사서 6에 팔아 5의 차익을 남기는 코드라서
해당 부분에 허점이 생겼다.


📝 Another Solution

이번에는 그룹을 두개로 나눠서 가장 큰 값이 있는 그룹과
가장 작은 값이 있는 그룹으로 나눴다.

나눈 뒤 가장 큰 값이 있는 그룹먼저
위에 사용한 코드와 같은 진행을 해주었다.

가장 작은 값이 있는 코드 역시 위와 같은 코드를 진행했다.

그 후 각 그룹에서의 결과를 서로 비교해
가장 높은 값이 있는 것을 반환했다.


▪️ Solution review

가장 큰 값이 있는 그룹과 작은 값이 있는 그룹을 나누면서
처음에 발생한 오류를 잡고 결과도 낼 수 있었는데
뭔가 더 코드를 줄일 수 있을 것 같아서
다른 방법도 생각해 봐야겠다.

profile
잠재력은 핵폭탄급 Frontend Developer

0개의 댓글

관련 채용 정보