[Java] 알고리즘, "문자열을 정수로 바꾸기"
- 알고리즘 문제/[Java] 알고리즘
- 2019. 2. 11. 23:01
문자열을 정수로 바꾸기
문제 설명
문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.
제한 조건
- s의 길이는 1 이상 5이하입니다.
- s의 맨앞에는 부호(+, -)가 올 수 있습니다.
- s는 부호와 숫자로만 이루어져있습니다.
- s는 0으로 시작하지 않습니다.
입출력 예
예를들어 str이 1234이면 1234를 반환하고, -1234이면 -1234를 반환하면 됩니다.
str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.
나의 풀이
1 2 3 4 5 | class Solution { public int solution(String s) { return s.matches("\\+?[1-9][0-9]{0,4}") ? Integer.parseInt(s) : Integer.parseInt(s.replace("-", ""))*-1; } } | cs |
뭔가 다른사람들이 한줄로 푸시는게 멋있어 보여서 오늘은 저도 한줄에 풀어봤습니다!!ㅎㅎ 정규식을 이용해서 들어오는 문자열을 패턴화 하였는데요. 우선 맨앞에 부호가 들어오거나 안들어올 경우가 있습니다. 근데 양수는 +가 있어도 있으나 없으나 양수로 "1234"를 그냥 parseInt해버리면 됩니다. 하지만 음수일 경우(즉, 저 정규식에서 false가 나오는 경우)는 (-) 기호를 뗀 숫자만 parseInt하여 숫자로 변환한 뒤 -1을 곱해주었습니다.
아참. 정규식에서 +기호는 정규식 키워드로 사용되어서 이스케이프를 시켜주었습니다. 첨엔 역슬래시 1개면 될줄알았는데 2개가 필요했습니다.^^
정규식 풀이: +는 1개 있거나 없거나, 1~9의 숫자중 1개가 그다음에 온다. 그래고 0~9까지의 숫자가 0~4번 나타난다.
다른사람의 풀이
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public class StrToInt { public int getStrToInt(String str) { boolean Sign = true; int result = 0; for (int i = 0; i < str.length(); i++) { char ch = str.charAt(i); if (ch == '-') Sign = false; else if(ch !='+') result = result * 10 + (ch - '0'); } return Sign?1:-1 * result; } //아래는 테스트로 출력해 보기 위한 코드입니다. public static void main(String args[]) { StrToInt strToInt = new StrToInt(); System.out.println(strToInt.getStrToInt("-1234")); } } | cs |
군더더기없는 깔끔한 코딩입니다. ㅎㅎ 원래는 이렇게 흐름을 쫓아 코딩했어야 하지만... 저는 쉽게쉽게 하고싶었습니다 ㅠㅠ
1 2 3 4 5 6 7 8 9 10 11 | public class StrToInt { public int getStrToInt(String str) { int num=Integer.parseInt(str); return num; } //아래는 테스트로 출력해 보기 위한 코드입니다. public static void main(String args[]) { StrToInt strToInt = new StrToInt(); System.out.println(strToInt.getStrToInt("-1234")); } } | cs |
사실 이문제는 그냥 Integer.parseInt(str)을 땋!!! 넣어주기만 하면 되는 문제였습니다......
'알고리즘 문제 > [Java] 알고리즘' 카테고리의 다른 글
[Java] 알고리즘, "최대공약수와 최소공배수" (0) | 2019.02.15 |
---|---|
[Java] 자바 알고리즘, "약수의 합" (3) | 2019.02.12 |
[Java] 알고리즘, 문자열 내림차순으로 배치하기 (0) | 2019.02.10 |
[Java] 알고리즘, "시저 암호" (0) | 2019.02.10 |
[Java] 알고리즘, "서울에서 김서방 찾기" (0) | 2019.02.09 |