열정가득한 개발자의 이야기/프로그래머스 문제

프로그래머스 - 숨어있는 숫자의 덧셈 (java)

가문비나무 위의 독수리 2024. 2. 19. 22:47

 

음.. 백엔드 쪽으로 갈 거라서 이제 다시 자바로 문제를 풀려고 합니다.

원래 코테 공부 스터디가 열려서 거기 들어가려고 자바스크립트를 푼 건데 마감했네요^^

그래서 본분?을 지키고자 다시 자바로 문제를 풀려고 합니다. 차근차근 처음부터

 

뭐.. 그렇게 많이 푼 적도 없지만요 

각설하고 lv 0의 문제고, 듬성듬성 숫자가 들어가 있는 배열에서 숫자만 골라서 더하는 문제입니다.

 

프로그래머스 - 숨어있는 숫자의 덧셈

처음 생각한 방식은 지금 좀 언어들이 뒤죽박죽 섞여서 맞는진 모르겠는데

대강 생각한 문제 풀이는 trim 같은 메서드로 하나씩 문자를 자르고 거기서 for문과 if 문을 섞어서 타입을 속아내고, 그러고 int면 더하려고 했습니다. 

근데  java는 python과 달리 typeof라는 간단한 메서드가 없다는 걸 잠시 잊었었습니다... 그래도 불굴의 의지로 parseint 이런 거 써가며 해봤지만 안 돼서 그냥 간단한 방식으로 ascii를 생각해 봤습니다.

어차피 a, A 이런 게 들어가 있어서 그 숫자 위로는 안 들어갈 거라고 생각했어요.

 

그래서 저의 답안은 아래와 같아요.

뭔가 잘 풀었다라고 생각했는데 지금 보니 코드가 정말 지저분하네요...ㅎ

그럼.. 간단하게 코드 리뷰를 해보겠습니다.

 

나의.. 지저분하지만 소중한 코드

일단 생각해야 하는 거 :

1. 배열이니까 하나씩 뽑아와야 한다 -> for 문 필요

2. 문자열로 되어있는 값 숫자로 변환 -> 문자로 되어있는 숫자를 진짜 숫자로 만들기 " -'0'하기"

예로 0이 ascii의 48이기 때문에 이 값을 문자에서 빼면 실제 숫자값이 됩니다. 문자 '3'은 아스키로 48 + 3이니까 51입니다. 그러니까 여기서 '0'를 마이너스해 주면 string으로 되어있던 3이 실제 int 3으로 변환되는 거예요

3. 값을 비교하기 위해 ascii를 사용 ->  값 골라내기 위해 17보다 작게 설정

 

그래서 이렇게 저의 코드는 완성되었습니다. 

뭔가 쉽게 말하는 것 같지만,, 저 특정 위치에 있는 문자형식의 숫자를 변환하기 위해 구글링을 어찌나 했던지..

이렇게 성장하는 거 아니겠습니까

할 수 있다!!