알고리즘_38번-2021.11.12

Jonguk Kim·2021년 11월 12일
0

알고리즘

목록 보기
14/15

1. 문제: 숫자 문자열과 영단어

  • 문제 설명

  • 제한사항

  • 입출력 예


2. 설계 및 구현

  • 분류
    • 입력값: 문자열 String
    • 처리: 문자열을 숫자로 변환
    • 출력값: 정수 int
  • 생각
    • 받은 문자열에서 영단어를 숫자로 변경
      • 영단어 문자열 배열 선언 => 각 영단어의 인덱스를 이용해 숫자로 변경
      • 문자열에서 영단어 문자열 변경 함수 사용 => replace(), replaceAll()
    • 문자열을 숫자로 변환
      • Integer.parseInt()
  • 성공코드
class Solution {
    public int solution(String s) {
        
        // 1. 각 영단어의 인덱스 숫자에 맞게 초기화 
        String[] numStr = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
        
        // 2. 문자열에서 각 영단어 찾아서 변경
        for (int i = 0; i < numStr.length; i++)
            s = s.replaceAll(numStr[i], String.valueOf(i));
        
        // 3. 문자열 -> 숫자
        return Integer.parseInt(s);
    }
}

3. 배운 것 / 느낀점

  • .split(숫자) 를 이용해서 숫자 기준으로 영단어 배열로 저장 -> 영단어 배열 숫자로 변경 -> 바뀐 위치에 넣어주는 부분에서 막힘 -> 사고력 필요
  • replace(), replaceAll() 사용법

문자열.repalce()

  • String replace(CharSequence target, CharSequence replacement)
  • replace() 함수는 대상 문자열을 원하는 문자값으로 변환하는 함수
    첫번째 매개변수는 변환하고자 하는 대상이 될 문자열
    두번째 매개변수는 변환할 문자 값
public class ReplaceTest{
    public static void main(String[] args){
        String replaceTest = "리플레이스 테스트";
        System.out.println(replaceTest.replace("리플레이스", "replace"));
        // replace 테스트
    }
}

문자열.repalceAll()

  • String replaceAll(String regex, String replacement)
  • replaceAll() 함수는 대상 문자열을 원하는 문자값으로 변환하는 함수
    첫번째 매개변수는 변환하고자 하는 대상이 될 문자열
    두번째 매개변수는 변환할 문자 값
public class ReplaceAllTest{
    public static void main(String[] args){
        String replaceAllTest = "리플레이스의 리플레이스테스트";
        System.out.println( replaceAllTest.replaceAll("리플레이스","replaceAll") );
        // replaceAll의 replaceAll테스트
    }
}

replace() vs repalceAll()

  • replace(): CharSequence 입력 문자순서와 동일한 것만 가능
  • replaceAll(): regex 정규 표현식 사용 가능, 개발 시 많이 사용
public class AllTest{
    public static void main(String[] args){
        String allTest = "aaabbbvccacfgdracabtghd";
        System.out.println( allTest.replace("ab","0"));			// ab로 시작하는 것만 0으로 변경
        //  aa0bbvccacfgdrac0tghd
        System.out.println( allTest.replaceAll("[ab]","0"));	// a, b 모두 0으로 변경
        //  000000vcc0cfgdr0c00tghd
    }
}
  • String.valueOf() 사용법

String.valueOf(값)

  • String valueOf(Object obj)
  • 모든 값을 문자열로 변환하는 함수
  • 파라미터가 null이면 문자열 "null"을 만들어서 반환 (항상 문자열 반환)
  • null 체크 방법은 "null".equals(string)
  • 값.toString()은 대상 값이 null이면 NPE를 발생 -> Object에 담긴 값이 String이 아니여도 출력
profile
개발일지

0개의 댓글