728x90
반응형
가짜 영수증 찾기
누군가가 가짜 영수증을 제출하고 있습니다. 김토스는 재무팀을 돕기 위해 가짜 영수증을 찾아내는 시스템을 만들고 싶습니다.
가짜 영수증을 찾아내는 방법은 간단합니다. 가짜 영수증에는 금액이 옳지 않게 적혀있습니다. 옳은 금액은 다음의 조건을 모두 만족합니다.
- 옳은 금액은 0~9 사이의 숫자 또는 구분자(`,`)로만 구성되어야 한다. 예를 들면 `1만원`이나 `10,000원`, `+300`은 0~9 사이의 숫자 또는 구분자(`,`)가 아닌 문자가 포함되어 있으므로 옳지 않은 금액이다.
- 금액이 0원인 경우를 제외하고는 가장 왼쪽 숫자가
0
일 수 없다. 예를 들면,0
은 옳은 금액이지만,0100
은 옳지 않다. - 금액은 세자리 구분자(
,
)를 포함하고 있거나, 또는 전혀 포함하고 있지 않다. 예를 들면, 구분자를 전혀 포함하지 않은 금액39900
도 옳은 금액이다. - 세자리 구분자는 가장 오른쪽 숫자로부터 시작해 왼쪽 방향으로 매 3개의 숫자마다 1개의 구분자(
,
)가 등장하는 형태이다. 예를 들면,25,000,123
은 옳은 금액이고,24,999,99
는 옳지 않은 금액이다. - 가장 왼쪽 끝이나 오른쪽 끝에는 구분자를 두지 않는다. 예를 들면,
10,000,
과,999,000
은 모두 옳지 않다.
영수증에 적혀있는 금액을 보고 가짜 영수증인지 진짜 영수증인지 판단하는 시스템을 만들어주세요.
입력 예시
solution(amountText)
함수의 인자는 아래와 같이 전달됩니다.
- 영수증에 적혀있는 금액 :
amountText
(1 <= 'amountText의 길이' <= 1000
)
출력 예시
주어진 amountText
가 옳은 금액이면 true
, 옳지 않은 금액이면 false
를 반환합니다.
풀이
이 문제는 정규식이 아닌 다른 방법을 풀려다가 경우의 수도 너무 많고 이참에 정규식도 오랜만에 써보자는 생각으로 정규식으로 풀어봤습니다.
다른 방법으로 하려니까,,,생각할 것들이 너무 많더라구요^^
정규식에 대해서는 추가로 정리해두었습니다~
https://yundevnote.tistory.com/30
[JAVA] 정규표현식
정규 표현식 주어진 문자열에서 발견할 수 있는 글자 패턴을 표현한 식 정규 표현식 표현법 표현식 의미 ^X 문자 선택을 표현하며 x 와 y 중에 하나를 의미한다. x$ 문자열의 종료를 표현하며 x 문
yundevnote.tistory.com
public class FakeReceipt {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String receipt = br.readLine();
if(!receipt.equals("0")) {
String pattern = "^[1-9]{1}[0-9]{0,2}(\\,?[0-9]{3})*$";
boolean regex = Pattern.matches(pattern, receipt);
System.out.println(regex);
} else
System.out.println(true);
}
}
728x90
반응형
'Algorithm' 카테고리의 다른 글
[Algorithm] 신규 아이디 추천 (0) | 2021.09.17 |
---|---|
[Algorithm] 과일 게임 (0) | 2021.08.28 |
[Algorithm] 계단을 오르는 방법 (0) | 2021.08.28 |
[Algorithm] 백준 알고리즘 - 1158번 : 요세푸스 문제 (0) | 2021.08.07 |
[Algorithm] 너비 우선 탐색(BFS, Breadth-First Search) (0) | 2021.04.29 |