Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- codewar
- 규칙없음
- codewars
- Algorithm
- Golang
- 오큘러스퀘스트2
- springboot
- 조엘온소프트웨어
- goalng
- pyenv
- Lint
- httppretty
- pep8
- printer_helper
- conf
- flake8
- 코로나백신
- vscode
- 독후감
- restfulapi
- GlobalInterprintLock
- loadimpact
- 유닉스의탄생
- python
- typevar
- ProxyServer
- organizeImports
- maxlinelength
- opensouce
- 글쓰기가필요하지않은인생은없다
Archives
- Today
- Total
일상적 이야기들.
codewar: Convert a String to Number! 본문
문제
- https://www.codewars.com/kata/544675c6f971f7399a000e79
문제풀이
- String으로 들어온 문자열을 Int형 변수로 변경하는 문제입니다.
- Java에서 지원하는 Integer.parseInt( string형변수 ) 를 통해서 가능합니다.
public class StringToNumber {
public static int stringToNumber(String str) {
//TODO: Convert str into a number
return Integer.parseInt(str);
}
}
- 함수를 쓰지 않고, 직접 구현을 해보기로 생각하고 다음과 같이 구현을 하였습니다.
- 입력받은 문자열을 char array로 변환을 하여, 한글자씩 체크를 합니다.
- 첫 문자가 '-' 라면, 음수라는 의미이므로 차후 값을 위하여 prefix 로 음수라는 정보를 입력받아둡니다.
- 문자가 0~9 사이라면, ascii 코드값을 이용하여 숫자의 값을 구합니다. ( '0' 은 Ascii 코드값 48 을 의미합니다. )
- 그리고, 결과에 값을 더해주게 되는데 한번 수행할때마다 자릿수가 변경이 되므로 *10 을 통해서, 현재 가져온 값을 1의 자리값으로 고정시켜줍니다.
- 모든 계산이 끝난 후, 이전에 구해두었던 prefix를 이용하여 '양수/음수' 의 값을 제대로 설정해줍니다.
String tmp = "-1231241231";
int resultValue = 0;
int prefix = 1;
for(char c : tmp.toCharArray()) {
if('-' == c) {
prefix = -1;
} else if( '0' <= c && c <= '9'){
int value = c - 48;
resultValue *= 10;
resultValue += value;
}
}
resultValue *= prefix;
System.out.println(resultValue);
'프로그래밍 > 알고리즘 문제풀이' 카테고리의 다른 글
codewars: Counting Duplicates (0) | 2019.07.04 |
---|---|
codewar: Sum of Parts (0) | 2019.07.02 |
codewar: Where is THB? (0) | 2019.07.02 |
codewar: Remove First and Last Character (0) | 2019.06.25 |
codewar: Fun with lists:indexOf (0) | 2019.06.25 |
Comments