코딩테스트/알고리즘 문제

[프로그래머스] 12918 문자열 다루기 기본- Java

glorypang 2025. 3. 27. 11:35
728x90
반응형
SMALL

📌 문제 정보

  • 출처: 문제 링크
  • 난이도: ⭐
  • 문제 유형: 문자열
  • 사용 언어: Java 

🔍 문제 설명

문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼 있는지 확인해 주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.

제한사항

  • s는 길이 1 이상, 길이 8 이하인 문자열입니다.
  • s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.

💡 풀이 노트

💡 핵심 조건
1. 문자열 길이는 4 또는 6이어야 함.
2. 문자열의 모든 문자는 숫자여야 함.

 

if(s.length() == 4 || s.length() == 6 )
  • 문제 조건에 따라, 4자리 또는 6자리일 때만 검사 진행
  • 그 외의 자리수는 `false` 반환
if(Character.isDigit(c)) return false;
  • 문자가 숫자가 아니면 `false` 반환

🚀 코드 (Java)

class Solution {
    public boolean solution(String s) {
        if(s.length() == 4 || s.length() == 6 ){
            for(char c: s.toCharArray()){
                if(!Character.isDigit(c)) return false;
            }
        }
        else
            return false;
        return true;
    }
}

🖥 실행 결과

입력 & 출력
s	return
"a234"	false
"1234"	true

🔄 추가 정보

`String` 을 `for-each` 로 순회하기

자바에서 `for-each` 문법은 `Iterable` 인터페이스를 구현한 객체만 사용 가능

for (Type item : iterableCollection) {
    // ...
}

`String` 은 `Iterable<Character>` 를 구현하지 않았기 때문에 아래 코드는 컴파일 에러

String s = "hello";
for (char c : s) { // ❌ 에러!
    System.out.println(c);
}

 

 

방법 1: 인덱스로 직접 접근

for (int i = 0; i < s.length(); i++) {
    char c = s.charAt(i);
}

 

방법 2: toCharArray() 사용

for (char c : s.toCharArray()) {
    // 각 문자 순회 가능
}

→ 이 방식은 `char[]` 배열이므로 `for-each` 문법 사용 가능!

 

`Character` 클래스 개요

자바의 `Character` 클래스는 문자에 대한 여러 유틸리티 메서드 제공
이 클래스의 메서드는 대부분 `static` 이라서 `Character.isXXX(c)` 형식으로 사용

 

메서드  설명  예시
`Character.isDigit(char c)` 숫자인지 확인 (0~9) `'5' → true, 'a' → false`
`Character.isLetter(char c)` 알파벳인지 확인 `'A' → true, '1' → false`
`Character.isLetterOrDigit(char c)` 문자나 숫자인지 확인 `'a' → true, '7' → true, '!' → false`
`Character.isWhitespace(char c)` 공백 문자인지 확인 `' ', '\\n', '\\t' 등`
`Character.isUpperCase(char c)` 대문자인지 `'A' → true, 'a' → false`
`Character.isLowerCase(char c)` 소문자인지 `'a' → true, 'A' → false`

📌 깃허브 코드 저장소: https://github.com/glorypang/CodingTest

 

 

 

 

728x90
반응형
LIST