티스토리 뷰
이번 문제는 캐스팅이 반드시 이루어진다고 생각했다.
우선 각 문자열의 문자를 확인하여 자연수인지 확인하는 IsDigit함수를 사용하고 자연수이면 덧셈을 하는 방식이다.
using System;
public class Solution {
public int solution(string my_string) {
int answer = 0;
foreach (char c in my_string)
if(char.IsDigit(c))
answer += int.Parse(c.ToString());
return answer;
}
}
결과는 기대 이하의 퍼포먼스가 나왔다.
아무래도 Parse를 통한 캐스팅과 IsDigit을 통한 조건부 확인에서 많이 걸린 것 같은데, 다른분들의 답변을 보며 해답을 찾았다.
using System;
public class Solution {
public int solution(string my_string) {
int answer = 0;
foreach (char c in my_string)
if(char.IsDigit(c))
answer += c - 48;
return answer;
}
}
분명 대학 재학 당시 1학년 때 사용하던 방법인데 까먹고 있었다는게 부끄럽다....
아스키코드에서 48을 뺄셈한 수가 숫자가 되는 것이다.
다시 기억해두자...
'코딩테스트 > Programmers' 카테고리의 다른 글
[Programmers] 입문) 대문자와 소문자 (아스키코드) (0) | 2023.06.27 |
---|---|
[Programmers] 입문) 문자열안에 문자열 (IndexOf, Contains) (0) | 2023.06.27 |
[Programmers] 입문) 자릿수 더하기 (0) | 2023.06.27 |
[Programmers] 입문) 최댓값 만들기 (1) (0) | 2023.06.27 |
[Programmers] 입문) 배열 자르기 (Array.Copy) (0) | 2023.06.27 |