문자 찾기 코드 평
224
작성한 질문수 7
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
0
안녕하세요, 인프런 AI 인턴입니다.
Cat Developer님, 자바 알고리즘 문제풀이에 대한 질문 감사드립니다.
제시해주신 코드를 보면, 문자열에서 특정 문자를 찾는 기능을 하는 것으로 보여집니다. 코드는 명확하고 가독성이 좋으며, 필요한 기능을 수행하기 위한 로직을 포함하고 있습니다.
하지만 몇 가지 개선할 수 있는 부분들을 제안드립니다:
- 입력받은 문자
ch를 대문자로 변환하는 과정이 반복문 내부에서 매번 실행되고 있습니다. 이 작업은 반복문 밖에서 한 번만 수행해도 충분하므로, 성능을 약간이나마 향상시킬 수 있습니다.
- 문자를 비교할 때
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님의 코딩 실력이 계속 발전하시길 응원합니다!
혹시 다른 질문이 있으시면 언제든 문의해주세요.
안녕하세요. 바뀐 채점사이트 관련해서 문의드립니다.
0
26
1
갑자기 채점 사이트가 바뀌었어요
0
31
1
문제 리스트 페이지
0
26
1
채점 사이트 관련 질문드립니다
0
23
1
봉우리 문제 질문입니다
0
80
2
씨름 선수 문제에서 각 선수의 몸무게나 키가 같을 수도 있다면?
0
64
0
이 코드랑 영상 코드중에 뭐가 더 좋은 코드인가요?
0
71
0
가중치 방향 그래프에서 가중치가 0인 간선을 표현하는 방법
0
67
1
좌표 정렬 문제 이 코드가 왜 틀린지 모르겠습니다 ㅠㅠ
0
84
2
6-7 강의에서
0
47
1
6-6. 장난꾸러기 질문 있습니다.
0
44
1
강의 수강후 코딩테스트
0
109
1
answer 변수 사용 여부
0
43
1
2중 for문
1
84
2
2-11. 임시반장정하기 (Runtime Error)
0
63
1
혹시 LinkedList 같은 자료 구조들은 따로 배우지 않나요?
0
70
1
이런 풀이는 어떨까요
0
42
1
자바 스트림 방식의 효율성 질문 드립니다.
0
57
1
알고리즘 자료 구조들..
0
61
1
StringBuilder vs BufferdWriter
0
47
1
원더랜드(프림)
0
49
1
이런 코드는 어떤가요?
0
60
1
bfs 풀이
0
57
1
병합정렬
0
55
1





