파란색 : 풀면서 어려웠던 부분 or 고려해야 될 부분

빨간색 : 해결방법

초록색 : 느낀점

문제

문제는 길지만 테스트문제를 보면 쉽게 이해 할 수 있었다. 

문자열을 체크하여 숫자만 뽑아내어 그 숫자들의 합을 리턴하는 문제이다.

풀이 : 내가 작성한 코드

단순히 문자열을 for문을 통해 char요소를 하나씩 체크하여 숫자가 나오면 새로 생성한 int형 변수에 차근차근 더하여 계산 하려했지만, 숫자가 붙어있는 경우(즉 1자리를 넘는 경우)에도 모두 1의자리로 계산이된다.  그러면 숫자를 그때마다 int형으로 바꿔서 더하지 말고 십의자리 그 이상의 자리까지를 대비가 필요하다. char형 문자를 체크하면서 숫자가 나오면 string변 수에 넣어준다. 다음 문자가 숫자가 아닐때 까지, 숫자가 아닐 때 까지 모두 더한 string변수를 int형으로 변경하여 값을 더 해준다.

두번째 if문에서 temp !=""를 체크하는 이유 : 첫 번째 if문은 숫자가 아닐 경우 temp에 있는 값을  sum 변수에 더해주고 있다. 문자열 마지막요소의 형식이 숫자라면 그 전까지 더한 temp를 넘기게된다. 그래서 마지막 체크를 한번 더 해줬다. 

풀이 : 다른 사람이 작성한 코드

foreach(Match match in Regex.Matches(inputString, "[0-9]+") 지정한 정규식을 통해 stirng 숫자값만 딱 뽑아진다.

 

문제 : https://codesignal.com/

반응형

+ Recent posts