18번

nacSeo (낙서)·2022년 12월 12일
0

DailyCoding

목록 보기
18/28

문자열을 입력받아 숫자를 모두 찾아 더한 뒤, 해당 값을 숫자와 공백을 제외한 나머지 문자열의 길이로 나누어 주고 정수값으로 반올림하여 리턴해야하는 문제였다. 지금까지 내가 본 데일리코딩 문제 중 가장 까다로워보였다.

다행히(?) 힌트에 Java String contains, Java String indexOf을 검색하여 활용해보라는 말이 나와있었다. 검색을 통해 다음과 같은 메서드들을 알 수 있었다.

  • indexOf() : 문자열에서 찾고자 하는 문자의 index값을 알고 싶을 때
  • contains() : 문자열에서 찾고자 하는 문자열의 포함 여부를 알고 싶을 때
  • matches() : 문자열에서 정규 표현식(숫자, 영문자, 한글) 등이 포함되어 있는지 알고 싶을 때

우선, 입력받은 문자열 str을 순회하며 만약 0~9까지 숫자를 담은 String타입 변수 digit에 str.charAt(i)가 포함되어 있으면, double타입 변수 sum에 Character.getNumericValue()함수를 이용해 더해준다. else if문을 제외해 str.charAt(i)가 공백이 아니라면 (숫자와 공백 모두 제외) 해당 문자를 String타입 변수 pureStr에 더해준다.

이 후, 결과를 담을 double타입 변수 result를 선언해 sum을 pureStr의 길이로 나눈 값을 담아준다.
마지막으로 Math.round함수를 사용해 첫 째자리에서 반올림시킨 값을 (int)를 붙여 형변환을 시켜줘서 리턴시켜주면 되겠다.


  • CharacterNumericValue(Char) : char형을 int형으로 변환
  • Math.round() : 소수점 n번째 자리까지 반올림
double pie = 3.14159265358979;
Math.round(pie);	// 3
Math.round(pie*10)/10.0;	// 3.1
Math.round(pie*100)/100.0;	// 3.14
profile
백엔드 개발자 김창하입니다 🙇‍♂️

0개의 댓글