[Java] Integer, Character 클래스 메서드

Doyeon·2023년 1월 28일
0
post-thumbnail
post-custom-banner

알고리즘 문제 풀다가 참고하면 좋을 메서드를 찾아보았다.
Integer 클래스와 Character 클래스의 메서드를 정리해보자!

Integer 클래스의 메서드

int parseInt(String s)

  • String → int
  • 문자열을 int형으로 반환한다.
    String str = "135";
    int num = Integer.pasreInt(str);

int parseInt(String s, int radix)

  • 다른 진수의 값 → 10진수
  • radix 부분에 몇 진수를 10진수로 바꿀 것인지 쓰면 된다.
    String str = "0021";  // 3진법으로 7
    int num = Integer.parseInt(str, 3);  // num = 7
    
    String str2 = "1000";  // 2진법으로 8
    int num2 = Integer.parseint(str2, 2);  // num2 = 8
    int num3 = Integer.toBinaryString(str2); // 2진수는 toBinaryString 사용해도 된다.

String toString(int i)

  • int → String
  • int형 숫자를 String 문자열로 반환한다.
    int num = 328;
    String str = Integer.toString(num);  // int형 숫자 328이 문자열 "328"이 된다. str = "328"

String toString(int i, int radix)

  • 10진수 → 다른 진수의 값
  • radix 부분에 몇 진수로 바꿀 것인지 쓰면 된다.
    int num = 45;
    String str = Integer.toString(num, 3); // 10진수인 45를 3진수로 바꾸면? str = "1200"

관련 문제

[프로그래머스 1단계] 3진법 뒤집기

코딩테스트 연습 - 3진법 뒤집기

[문제] 자연수 n이 매개변수로 주어질 때, n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 해보자

→ Integer 클래스에 있는 parseInt , toString 메서드를 사용하면 쉽게 풀 수 있다.

class Solution {
    public int solution(int n) {
         return Integer.parseInt(new StringBuilder(Integer.toString(n, 3)).reverse().toString(), 3);
    }
}
  • new StringBuilder(Integer.toString(n, 3))
    • int n을 3진수로 변환한 String을 StringBuilder에 넣는다.
  • .reverse().toString()
    • 문자열을 뒤집는 reverse 함수를 사용하기 위해 StringBuilder에 3진수 값을 넣는다.
    • 뒤집은 문자열을 toString()으로 String 문자열로 만든다.
  • Integer.parseInt( ~ , 3)
    • ~ 에 해당하는 문자열이 3진수이므로 다시 10진수로 바꾸기 위해 parseInt 메서드를 사용한다.

Character 클래스의 메서드

boolean isUpperCase(char ch)
boolean isLowerCase(char ch)

  • ch가 대/소문자인가?
    char ch = 'a';
    
    System.out.println(Character.isUpperCase(ch));  // false
    System.out.println(Character.isLowerCase(ch));  // true

boolean isLetter(char ch)

  • ch가 문자인가?
    char ch1 = '1';
    char ch2 = 'A';
    
    System.out.println(Character.isLetter(ch1));  // false
    System.out.println(Character.isLetter(ch2));  // true

boolean isDigit(char ch)

  • ch가 숫자인가?
    char ch1 = '1';
    char ch2 = 'A';
    
    System.out.println(Character.isLetter(ch1));  // ture
    System.out.println(Character.isLetter(ch2));  // false

boolean isWhiteSpace(char ch)

  • ch가 공백인가?
    char ch = ' ';
    
    System.out.println(Character.isWhiteSpace(ch));  // true

int getNumericValue(char ch)

  • char → int
  • char형 문자를 Int형 숫자로 반환
    char c = '1';
    
    int n = Character.getNumericValue(c);  // 문자 '1'이 숫자 1로 바뀌어 n에 저장
    
    System.out.println(1 + n);  // 2 출력
    System.out.println(1 + c);  // 50 출력 (문자 '1'의 아스키 코드 값 = 49)

관련 문제

[프로그래머스 0단계] 숨어있는 숫자의 덧셈(1)

코딩테스트 연습 - 숨어있는 숫자의 덧셈 (1)

[문제] 문자열 my_string 안의 모든 자연수들의 합을 return해보자
→ 문자열에서 숫자를 찾는다 → 숫자 모양의 char 문자들을 int형으로 바꾼다 → 모두 더한다

  • Character 클래스 메서드 사용하지 않고 푼 코드
    class Solution {
        public int solution(String my_string) {
            int answer = 0;
    
            for (int i = 0; i < my_string.length(); i++) {
                if (my_string.charAt(i) >= '0' && my_string.charAt(i) <= '9')
                    answer += my_string.charAt(i) - '0';
            }
    
            return answer;
        }
    }
  • Character 클래스 메서드 사용해서 푼 코드
    class solution {
        public int solution(String s) {
            int answer = 0;
    
            char[] a = s.toCharArray();
            for (char x : a) {
                if (Character.isDigit(x)) 
    								answer += Character.getNumericValue(x);
            }
            return answer;
        }
profile
🔥
post-custom-banner

0개의 댓글