[algo] 문자열을 정수로 바꾸기

유현영·2020년 2월 24일
0

algo

목록 보기
5/8

1. 풀이

문자열 s를 숫자로 변환한 결과를 반환하는 함수,
1 이상 5이하길이의 맨앞에 부호(+, -)가 올 수 있는 문자열을 숫자로 바꾸는 문제

class Solution {
  public int solution(String s) {
      int answer = 0;
      answer = Integer.parseInt(s);
      return answer;
  }
}

처음에는 하나하나 for문으로 검사해야 하나라고 생각했는데 생각해보니 음수일때는 '-'가 붙어서 나오고 양수일때 는'+' 기호가 붙지 않으니 단순히 string을 int 로만 바꾸면 될 것이라고 생각함.

2. 공부해볼 것

for문 돌면서 문자열 하나하나 형변환 해줄 생각도 했기 때문에 문자열과 형변환 대해서 정리해두려함
🔍 자주쓰이는 형 변환(casting)

위의 사진에서 왼쪽에서 오른쪽으로의 변환은 자동 형변환이 일어나며 반대 방향으로의 변환은 반드시 강제 형변환을 해주어야함

다음은 자동으로 변환이 이뤄지지 않고, 자주쓰이는 것들을 정리해 보았음

  1. int -> String
String str = Integer.toString(i); 
String str = "" + i;
  1. String -> int
int i = Integer.parseInt(str); 
int i = Integer.valueOf(str).intValue();
  1. String -> Double, Float
String s_num = "10";
double d_num = Double.valueOf(s_num);
float f_num = Float.valueOf(s_num); 
  1. boolean -> Integer
int i = (b)? 1 : 0;

🔍 문자열 합치기 방법
1. +
문자열을 먼저 StringBuilder로 변환시킨뒤, Append로 문자열을 더하고 다시 toString함수로 문자열로 반환해주는 방식이다.

String a = "카페에서 ";
String b = "아아";
		
System.out.println(a+b);
//카페에서 아아
  1. concat()
    Concat은 합친 문자열을 String으로 생성해줌. String객체는 immutable이라서 새로운 문자가 더해질때 마다 새로운 인스턴스 생성한다.
String a = "고구마랑 ";
String b = "얼린귤";
		
System.out.println(a.concat(b));
//고구마랑 얼린귤
  1. StringBuilder
String abc = new StringBuilder()
  .append("A")
  .append("B")
  .append("C").toString();

결론

▶️ 기본적으로 + 연산자를 쓰자.
▶️ multithreaded 환경에서는 StringBuffer
▶️ 반복문에서의 작업이나 다양한 문자열 작업 처리는 StringBuilder 또는 StringBuffer

3. 다른사람 풀이

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;
    }
profile
오늘보다 더 나은 내일

0개의 댓글