반응형
문제 제목 : 킹, 퀸, 룩, 비숍, 나이트, 폰
문제
동혁이는 오래된 창고를 뒤지다가 낡은 체스판과 피스를 발견했다.
검정색 피스는 모두 있었으나, 흰색 피스는 개수가 올바르지 않았다.
체스는 총 16개의 피스를 사용하며,
킹 1개, 퀸 1개, 룩 2개, 비숍 2개, 나이트 2개, 폰 8개로 구성되어 있다.
동혁이가 발견한 흰색 피스의 개수가 주어졌을 때,
몇 개를 더하거나 빼야 올바른 세트가 되는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다.
이 값은 0
보다 크거나 같고, 10
보다 작거나 같은 정수이다.
출력
첫째 줄에 입력에서 주어진 순서대로,
몇 개의 피스를 더하거나 빼야 되는지를 출력한다.
만약 수가 양수라면 그 개수 만큼 피스를 더해야 하며,
음수라면 제거해야 하는 것이다.
예제 입력 1
0 1 2 2 2 7
예제 출력 1
1 0 0 0 0 1
예제 입력 2
2 1 2 1 2 1
예제 출력 2
-1 0 0 1 0 7
검정색의 피스들은 개수가 정확하며,
반대 색깔인 하얀색은 검정색의 피스와 개수가 동일해야 한다.
만약에 체스판의 구성 카테고리가 정해지지 않았다면,
킹, 퀸, 룩, 비숍, 나이트, 폰 의 개수를 문제에서 주지 않고,
블랙과 화이트 피스를 입력에서 동시에 주었을 것이다.
하지만, 문제에서 이러한 피스들의 유형, 개수를 완전하게 주었다.
해석 :
킹 1개, 퀸 1개, 룩 2개, 비숍 2개, 나이트 2개, 폰 8개로 구성되어 있다.
- 입력으로 들어올 하얀색 피스와의 개수를 비교하기 위해 배열을 생성할 수 있다.
- 배열의 길이는 구성 카테고리의 개수인 6개이며, 각각 1, 1, 2, 2, 2, 8 을 담을 수 있다.
- 입력으로 하얀색 피스의 개수가 들어 올 때 마다, 미리 생성된 검은색 피스 배열과 비교할 수 있다.
만약 수가 양수라면, 그 개수만큼 피스를 더하며, 음수라면 제거하는 것이다.
- 만약 하얀색 피스의 킹 개수가 3개라면,
-2
가 정답이다. - 만약 하얀색 피스의 폰 개수가 5개라면,
3
이 정답이다. - 점화식 : 검정색 피스 - 입력된 하얀색 피스 => 정답
Answer
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
// 블랙 피스
int[] pieces = {1, 1, 2, 2, 2, 8};
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
StringBuilder sb = new StringBuilder();
for (int i = 0; i < pieces.length; i++) {
int piece = Integer.parseInt(st.nextToken());
sb.append(pieces[i] - piece).append(" ");
}
System.out.println(sb.toString());
}
}
'백준-단계별로 풀어보기 > 6-심화 1' 카테고리의 다른 글
백준 2941 Java - 크로아티아 알파벳 (0) | 2024.10.25 |
---|---|
백준 10988 Java - 팰린드롬인지 확인하기 (0) | 2024.09.18 |
백준 2444 Java - 별 찍기 - 7 (1) | 2024.09.18 |