Leetcode Java Optimal Division
업데이트:
문제
코드
class Solution {
public String optimalDivision(int[] nums) {
int length = nums.length;
StringBuilder sb = new StringBuilder();
sb.append(nums[0]);
for (int idx = 1; idx < length; idx++) {
sb.append("/");
if (idx == 1 && length > 2) {
sb.append("(");
}
sb.append(nums[idx]);
}
if (length > 2) {
sb.append(")");
}
return sb.toString();
}
}
결과
설명
- 정수가 들어있는 nums를 나눗셈만 사용해서 나올 수 있는 최대의 값을 구하는 공식을 만들어 반환하는 문제이다.
- 수학 공식을 나눗셈만 사용하여 계산할 경우 나올 수 있는 최솟값과 최댓값은 아래와 같다.
- 모든 값을 순차적으로 나눈 결과는 최솟값이 된다. (Ex. $1 / 2 / 3 / 4 = \frac{1}{2} / 3 / 4 = \frac{1}{6} / 4 = \frac{1}{24}$)
- 첫 값을 나머지 값들을 순차적으로 나눈 결과로 나눈 결과는 최댓값이 된다. (Ex. $1 / (2 / 3 / 4) = 1 / (\frac{2}{3} / 4) = 1 / \frac{2}{12} = \frac{12}{2} = 6$)
- 수학 공식을 나눗셈만 사용하여 계산할 경우 나올 수 있는 최솟값과 최댓값은 아래와 같다.
- 문제 풀이에 필요한 변수를 정의한다.
- length는 nums의 길이를 저장한 변수이다.
- sb는 주어진 문제의 공식을 동적으로 구성할 StringBuilder 객체로 정의하고, nums의 첫 값을 넣어준다.
- 동적 문자열의 생성시, 효율적인 메모리 사용을 위해 StringBuilder를 사용한다.
- 1부터 length 미만까지 idx를 증가시키며 아래를 수행한다.
- sb에 나눗셈 기호(“/”)를 추가한다.
- idx가 1이고 length가 2 초과인 경우, 소괄호 시작 문자(“(“)를 추가한다.
- sb에 nums의 idx번쨰 값을 넣어준다.
-
반복이 완료되고 length가 2 초과인 경우, 소괄호 종료 문자(“)”)를 추가한다.
- 완성된 공식인 sb를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기