728x90
문제
철수는 1000000원을 가지고 있다. 하지만, 1000000원이라는 금액은 '0'이 너무 많아 한번에 확인하기가 어렵다. 다음 임의의 수 number가 주어질 때 1000 단위마다 쉼표(,)가 적혀 있는 문자열을 출력하자
예시
ex1) number = 1000000
answer = 1,000,000
ex2) number = 12345
answer = 12,345
문제풀이
문제 풀이 방식은 다양하다. 그 중에서도 쉽게 외부 함수를 활용하는 방법이 있고 외부 함수를 사용하지 않는 방법이 있다.
외부함수를 활용하는 방법
public class decimalFormat {
public static void main(String[] args) {
int number = 1000000;
DecimalFormat df = new DecimalFormat("###,###");
String answer = df.format(number);
System.out.println(answer);
}
}
DecimalFormat 함수를 활용하는 방법은 아주 간단하다.
원하는 number값만 대입하면 된다.
이 외에도 NumberFormat 함수를 활용하는 방법도 있다.
public class numberFormat {
public static void main(String[] args) {
int number = 1000000;
NumberFormat df = NumberFormat.getInstance();
String answer = df.format(number);
System.out.println(answer);
}
}
NumberFormat은 getInstance()메서드로 가져온다는 것을 알 수 있다.
외부함수를 쓰지 않는 방법
사실, 어떤 회사에 코딩테스트를 보며 손코딩으로 나온 문제였다. 불행하게도 외부함수를 사용하지 않고 구현해야했다. 난이도는 쉬운 문제였지만 손코딩으로 푸는것은 다소 불편함이 있었다.
나는 정규표현식을 활용했다.
public class ThousandNumber{
public static void main(String[] args) {
String number = "1000000";
number = number.replaceAll("\\B(?=(\\d{3})+(?!\\d))", ",");
System.out.println(number);
}
}
회고
실제 코딩테스트를 볼 때는 엄청 복잡한 방식으로 문제를 풀었다. 결과적으로 잔 실수가 많았고 완전히 틀린 문제였다. 다만, 집에 와서 돌이켜보니 정규표현식을 사용하는 방법도 있었다.
이번 코딩테스트는 좋은 점수를 받지 못하겠지만, 나에게 많은 도전을 주었다. 이번 교훈을 통해 더 열심히 공부해야겠다.
'개발일지 > Today I Learn' 카테고리의 다른 글
[ TIL ] OTP 코드에서 난수를 Random이 아닌 SecureRandom으로 생성하는 이유에 대해 알아보자 (0) | 2023.10.06 |
---|---|
[ 개발 일지 ] IT 채용 한파와 비전공자 개발자의 준비 (1) | 2023.07.17 |
[ TIL ] 명령형 프로그래밍과 선언형 프로그래밍 (0) | 2022.11.29 |
[ TIL ] JPA에 대한 고민 (0) | 2022.11.28 |
[ TIL ] Spring Data JPA에서 save() 메서드의 쓰임 (0) | 2022.11.22 |