나의 모양

[DailyCoding] 17 | computeSquareRoot 본문

SEB/Daily Coding

[DailyCoding] 17 | computeSquareRoot

kexon 2022. 8. 12. 13:08

✏️ Description

수를 입력받아 제곱근 값을 소수점 두 자리까지 리턴

 

  • 입력: int 타입의 정수 (num >= 2)
  • 출력: String 
    • 최대 소수점 둘째 짜리까지 구한 수를 문자열로 변환하여 출력합니다. (소수점 셋째 자리에서 반올림)
  • 입출력 예시
String output = computeSquareRoot(9);  // --> "3.00"
output = computeSquareRoot(6);  // --> "2.45"

📝 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);
Comments