[백준/Java] 2386번: 도비의 영어 공부
문제 정보
제목 : 도비의 영어 공부
번호 : 2386번
사용 언어 : Java
문제 링크
https://www.acmicpc.net/problem/2386
2386번: 도비의 영어 공부
출력의 각 줄은 입력으로 주어진 소문자와 그 소문자 알파벳이 나타난 횟수로 이루어진다. 이때 문장에서 해당 알파벳이 소문자로 나타나던 대문자로 나타나던 모두 세야 한다.
www.acmicpc.net
시간 제한 | 메모리 제한 |
1 초 | 128 MB |
문제
꿍은 도비의 자유를 위해 영어를 가르치기로 결심했다. 하지만 도비는 바보라 ABC부터 배워야 한다.
그래서 꿍은 영어 문장과 알파벳 하나가 주어지면 그 알파벳이 문장에서 몇 번 나타나는지를 세는 문제들을 내주었다. 하지만 도비는 마법사고 컴공도 마법사다.
여러분은 도비를 위해 문제의 답을 알려주는 프로그램을 만들수 있을것이다!
입력
입력은 몇 개의 줄들로 이루어진다.
각 줄에는 하나의 소문자와 영어 문장이 공백으로 구분되어 주어진다.
각 문장은 길이가 1에서 250이며 입력의 마지막은 #이다.
출력
출력의 각 줄은 입력으로 주어진 소문자와 그 소문자 알파벳이 나타난 횟수로 이루어진다. 이때 문장에서 해당 알파벳이 소문자로 나타나던 대문자로 나타나던 모두 세야 한다.
입출력 예제

나의 풀이
while루프를 이용해 "#"이 입력되기 전까지 반복합니다. 문장이 입력되면 charAt()을 이용해 첫번째 인덱스의 문자를 word변수에 저장합니다. 해당 알파벳의 개수를 세는 함수를 이용해 값을 구하여 -1한 후 result에 저장하고 출력형식에 맞게 출력합니다. 이때 알파벳의 개수를 세는 함수는 replace()와 length()을 이용해 전체 문자열의 길이에서 소문자 및 대문자를 "" 으로 변환한 길이를 빼서 구합니다.
코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
while(true) {
String str = br.readLine();
if( str.equals("#")) {
break;
} else {
String word = String.valueOf(str.charAt(0));
int result = countWord(str,word)-1;
bw.write(word + " " + result +"\n");
}
}
bw.flush();
bw.close();
br.close();
}
static int countWord(String s,String word) {
int n1 = s.length() - s.replace(word.toLowerCase(), "").length();
int n2 = s.length() - s.replace(word.toUpperCase(), "").length();
return n1+n2;
}
}