일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 회고
- FilterChain
- Spring Security
- 데일리코딩
- 제네릭스
- 부트캠프
- 백엔드
- 인텔리제이
- 자료구조
- 컬렉션프레임워크
- 자바
- fibonacci
- CLI명령어
- java
- spring data jpa
- 그리디
- HTML
- 첫글자대문자
- 깃허브
- 알고리즘
- 백준알고리즘
- 스프링
- 계산기만들기
- 문자열뒤집기
- Publishing
- 페어프로그래밍
- testing
- Spring Data JDBC
- 거듭제곱
- CSS
Archives
- Today
- Total
나의 모양
[DailyCoding] 17 | computeSquareRoot 본문
✏️ Description
수를 입력받아 제곱근 값을 소수점 두 자리까지 리턴
- 입력: int 타입의 정수 (num >= 2)
- 출력: String
- 최대 소수점 둘째 짜리까지 구한 수를 문자열로 변환하여 출력합니다. (소수점 셋째 자리에서 반올림)
- 입출력 예시
String output = computeSquareRoot(9); // --> "3.00"
output = computeSquareRoot(6); // --> "2.45"
- 힌트
- 소수점 처리는 java 표준 내장 객체인 String를 사용 (java decimal places limit 또는 자바 소수점 자리수)
- 바빌로니아 법의 점화식(recurrence formula)
https://ko.wikipedia.org/wiki/바빌로니아_법
📝 Flow
1. 소수점 3자리부터 반올림
- 배열에 소수점 자리만큼 double값을 선언 및 할당
2. 선언한 배열을 순회 => for
2-1. 초기값을 곱했을때, 입력된 값보다 작다면
- 기본값에 배열의 인자(소숫점 초기값)을 더해주고 => while
2-2. 모두 더한 값이 입력된 num과 일치하면
- 소수점 2자리까지의 값을 String값으로 변환하여 리턴 => String.format
- 기본 값에서 배열의 인자를 제외
(제외해야 배열의 인자가 바뀌고, while문이 정상적으로 순회가 가능)
3. 소수점 2자리까지의 값을 String값으로 변환하여 리턴 => String.format
👩🏻💻 Implementation
double[] diffs = new double[]{1, 0.1, 0.01, 0.001};
double base = 1;
for (double diff : diffs) {
while (base * base < num) {
base = base + diff;
}
if (base * base == num) return String.format("%.2f", base);
else base -= diff;
}
return String.format("%.2f", base);
'SEB > Daily Coding' 카테고리의 다른 글
[DailyCoding] 24 | isSubsetOf (0) | 2022.08.25 |
---|---|
[DailyCoding] 21 | largestProductOfThree (0) | 2022.08.22 |
[DailyCoding] 16 | isIsogram (0) | 2022.08.11 |
[DailyCoding] 08 | convertDoubleSpaceToSingle (0) | 2022.08.01 |
[DailyCoding] 07 | convertListToObject (0) | 2022.07.29 |
Comments