
내가 생각했을때 문제에서 원하는부분
The first line of the input gives the number of test cases, T.
T lines follow, each one containing the name of one country.
Country names will consist of only lower case English letters, starting with a capital letter.
There will be no other characters on any line, and no empty lines.
For each test case, output one line containing "Case #x: C is ruled by Y.", where x is the case number (starting from 1), C is the country name, and Y is either "a king", "a queen" or "nobody".
Be careful with capitalization and the terminating period.
Your output must be in exactly this format. See the examples below.
내가 이 문제를 보고 생각해본 부분
입력 처리
BufferedReader를 사용하여 빠르고 효율적으로 입력을 받는다.
첫 줄에서는 테스트 케이스 개수 T를 읽어오고, 이후 for문을 통해 T개의 왕국 이름을 한 줄씩 입력받는다.
입력된 왕국 이름은 trim() 메서드로 앞뒤 공백과 탭 문자를 제거해 깔끔한 문자열로 만든다.
마지막 글자 확인
각 왕국 이름에서 country.charAt(country.length() - 1)를 통해 마지막 문자를 가져온다.
이 문자는 대소문자 구분 없이 판단하기 위해 소문자로 변환(Character.toLowerCase)한다.
지배자 결정 로직
마지막 글자가 'y'이면, 해당 왕국은 혼란 상태이므로 ruler를 "nobody"로 설정한다.
마지막 글자가 모음(a, e, i, o, u) 중 하나라면 "a queen"으로 설정한다.
그 외 (자음)인 경우 "a king"으로 설정한다.
결과 출력
각 테스트 케이스마다 “Case #x: [왕국 이름] is ruled by [지배자].” 형식으로 출력한다.
x는 1부터 시작하는 테스트 케이스 번호이다.
띄어쓰기, 대소문자, 마침표까지 문제 요구사항과 정확히 일치하도록 신경쓴다.
자원 정리
입력이 모두 끝난 후, br.close()를 호출하여 입력 스트림을 닫아준다.
코드로 구현
package baekjoon.baekjoon_32;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
// 백준 12517번 문제
public class Main1287 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for (int i = 1; i <= T; i++) {
String country = br.readLine().trim();
char lastChar = Character.toLowerCase(country.charAt(country.length() - 1));
String ruler;
if (lastChar == 'y') {
ruler = "nobody";
} else if ("aeiou".indexOf(lastChar) != -1) {
ruler = "a queen";
} else {
ruler = "a king";
}
System.out.println("Case #" + i + ": " + country + " is ruled by " + ruler + ".");
}
br.close();
}
}
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.