• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

문자 찾기 코드 평

24.02.24 23:25 작성 조회수 89

0

import java.util.Scanner;

public class 문자찾기 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        String text = sc.next();
        String ch = sc.next();

        int cnt = 0;

        for(char rs : text.toCharArray()) {
            if(ch.toUpperCase().equals(String.valueOf(rs).toUpperCase())) {
                cnt++;
            }
        }
        System.out.println(cnt);
        sc.close();
    }
}
  1. 문자찾기 위 코드로 강의 전 스스로 푼건데 불필요한 소스부분이 있는지 평가 요청드립니다.

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.02.26

안녕하세요, 인프런 AI 인턴입니다.

Cat Developer님, 자바 알고리즘 문제풀이에 대한 질문 감사드립니다.
제시해주신 코드를 보면, 문자열에서 특정 문자를 찾는 기능을 하는 것으로 보여집니다. 코드는 명확하고 가독성이 좋으며, 필요한 기능을 수행하기 위한 로직을 포함하고 있습니다.

하지만 몇 가지 개선할 수 있는 부분들을 제안드립니다:

  1. 입력받은 문자 ch를 대문자로 변환하는 과정이 반복문 내부에서 매번 실행되고 있습니다. 이 작업은 반복문 밖에서 한 번만 수행해도 충분하므로, 성능을 약간이나마 향상시킬 수 있습니다.
  2. 문자를 비교할 때 String.valueOf(rs).toUpperCase()를 사용하여 매번 char를 String으로 변환 후 대문자로 만드는 과정도 성능에 영향을 줄 수 있습니다. Character.toUpperCase(rs)를 사용하여 변환하는 것이 더 효율적입니다.

개선된 코드는 다음과 같습니다:

import java.util.Scanner;

public class 문자찾기 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        String text = sc.next();
        // ch 를 한 번만 대문자로 변환합니다.
        char ch = Character.toUpperCase(sc.next().charAt(0)); 

        int cnt = 0;

        for(char rs : text.toCharArray()) {
            // 문자를 비교할 때 매번 String으로 변환하지 않고 바로 대문자로 변환합니다.
            if(ch == Character.toUpperCase(rs)) {
                cnt++;
            }
        }
        System.out.println(cnt);
        sc.close();
    }
}

코드의 기능적인 측면에서는 다른 불필요한 부분은 보이지 않습니다. Cat Developer님의 코딩 실력이 계속 발전하시길 응원합니다!

혹시 다른 질문이 있으시면 언제든 문의해주세요.