CODINGTEST

[Java/Python] 타입 확인 및 replace

ch010104 2026. 5. 8. 11:20

타입 확인

1. 핵심 요약 비교표

구분 파이썬 (Python) 자바 (Java)
변수 타입 확인 isinstance(x, int) x instanceof Integer
엄격한 타입 비교 type(x) == int x.getClass() == Integer.class
문자열 내 숫자 판별 s.isdigit() s.matches("\\\\d+") (정규식)
주요 특징 내장 메서드가 풍부함 정규식이나 예외 처리를 주로 사용

2. 언어별 상세 코드 (조건문 예시)

🐍 파이썬 (Python)

파이썬은 문자열 객체 안에 자체적인 판별 메서드가 내장되어 있어 매우 편리합니다.

  • 변수의 타입 자체를 확인
  • data = 10 if isinstance(data, int): print("이 변수는 숫자형입니다.")
  • 문자열 내용물이 숫자인지 확인 (isdigit)
  • s = "12345" if s.isdigit(): print("문자열이지만 숫자로만 구성되어 있어 변환이 가능합니다.") # "12.3" 처럼 소수점이 있으면 False를 반환하므로 주의!

☕ 자바 (Java)

자바의 String 클래스에는 isdigit() 같은 단일 메서드가 없어서 보통 정규표현식을 사용합니다.

  • 변수의 타입 자체를 확인
  • Object data = "123"; if (data instanceof String) { System.out.println("이 변수는 문자열 타입입니다."); }
  • 문자열 내용물이 숫자인지 확인
  • String s = "12345"; // 정규식 사용: \\d(숫자)가 +(1개 이상) 있는지 확인 if (s != null && s.matches("\\\\d+")) { System.out.println("문자열 내용이 숫자로만 구성되어 있습니다."); }

3. [심화] 내용물 판별 시 주의사항

파이썬의 isdigit(), isnumeric(), isdecimal() 차이

파이썬은 숫자를 판별하는 메서드가 세분화되어 있습니다.

  • isdigit(): 가장 흔히 사용. 일반 숫자 및 지수(²) 등 판별.
  • isdecimal(): 오직 0-9까지의 정수만 판별.
  • isnumeric(): 분수, 로마자 숫자 등 더 넓은 범위의 숫자 형태 인정.
  • 공통점: 음수("-")나 소수점(".")은 False를 반환합니다. (이때는 try-except로 float() 변환을 시도하는 것이 일반적입니다.)

자바에서 숫자를 판별하는 다른 방법들

  1. 반복문 사용: 문자열의 각 문자가 Character.isDigit()인지 일일이 확인.
  2. Try-Catch 활용 (가장 확실함):
  3. try { Integer.parseInt(s); // 숫자 변환 성공 시 로직 } catch (NumberFormatException e) { // 숫자가 아닐 때 로직 }

Replace

1. 파이썬 (Python)

파이썬의 replace는 사용법이 매우 간단하며, 원본 문자열을 직접 바꾸지 않고 치환된 새로운 문자열을 반환합니다.

  • 문법: 문자열.replace(찾을값, 바꿀값)
  • 특징: 별도의 정규식 없이도 모든 일치 항목을 한꺼번에 바꿉니다.

📝 파이썬 문제 풀이 예시

def solution(s): words = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']

for i, word in enumerate(words):
    # 영단어를 그 인덱스(i)의 문자열 형태로 치환
    s = s.replace(word, str(i))
    
return int(s)`

☕ 2. 자바 (Java)

자바는 replace와 replaceAll 두 가지가 있는데, 이 문제처럼 단순히 글자를 바꿀 때는 성능이 더 빠른 replace를 권장합니다.

  • 문법: 문자열.replace("찾을값", "바꿀값")
  • 특징: 자바의 String은 불변(Immutable)이므로, 반드시 s = s.replace(...)와 같이 결과값을 다시 변수에 담아줘야 합니다.

📝 자바 문제 풀이 예시

class Solution { public int solution(String s) { 
    String[] words = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};

    for (int i = 0; i < words.length; i++) {
            // String.valueOf(i)는 int i를 문자열로 바꿔줍니다.
            s = s.replace(words[i], String.valueOf(i));
        }
    
    return Integer.parseInt(s);
}

⚖️ 한눈에 비교하기 (파이썬 vs 자바)

비교 항목 파이썬(Python) 자바(Java)
메서드명 replace() replace() 또는 replaceAll()
숫자 형변환 str(i) String.valueOf(i)
변경 방식 반환값을 다시 대입하거나 체이닝 반드시 다시 대입 (s = s.replace...)
결과 반환 int(s) Integer.parseInt(s)

'CODINGTEST' 카테고리의 다른 글

[코딩테스트] 현대오토 2026-04-05 회고  (0) 2026.04.05