Codewars 문제풀기 (03/03)
SquareEveryDigit
-
integer를 입력하면 해당 integer의 digit들의 2제곱을 integer로 출력
-
squareDigits(9119) –> 811181
1. Test를 만들었다
-
숫자가 하나일 때
입력한 숫자의 제곱을 반환하면 되겠구나
public int squareDigits(int n) { return n * n; }
-
숫자가 두개 이상일 때
문자열 digit나눠서 해당 integer의 제곱을 string에 붙이자
public int squareDigit(int n) { List<Integer> list = new ArrayList<>(); while (n > 0) { int digit = n % 10; list.add(0, digit * digit); n /= 10; } StringBuilder result = new StringBuilder(); for (int i = 0; i<list.size(); i++) { result.append(list.get(i)); } return Integer.parseInt(result.toString()); }
Success.
2. 리팩토링 시작
for문대신 for each문 쓰는게 더 좋을거같아서 수정
public int squareDigit(int n) {
List<Integer> list = new ArrayList<>();
while (n > 0) {
int digit = n % 10;
list.add(0, digit * digit);
n /= 10;
}
StringBuilder result = new StringBuilder();
for (Integer integer : list) {
result.appned(integer);
}
return Integer.parseInt(result.toString());
}
3. 답 비교, 느낀점
Best Practice 가장 많이 받은 코드
public class SquareDigit {
public int squareDigits(int n) {
String result = "";
while (n != 0) {
int digit = n % 10 ;
result = digit*digit + result ;
n /= 10 ;
}
return Integer.parseInt(result) ;
}
}
- 굳이 List를 쓰지않아도 되겠구나라고 느낌 logic 자체는 비슷한거같다.
4. 궁금한거 공부
- 없음
댓글남기기