코딩 기록 저장소

[백준/Java] 2386번: 도비의 영어 공부 본문

백준/기타

[백준/Java] 2386번: 도비의 영어 공부

KimNang 2023. 5. 19. 21:07

문제 정보

제목 : 도비의 영어 공부

번호 : 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;
   }
}