문제 풀이

[백준] 3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰 - JAVA (자바)

auyeol 2023. 1. 10. 14:15
728x90

 

 

문제

 

https://www.acmicpc.net/problem/3003

 

3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰

첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다.

www.acmicpc.net

 

사용자의 입력을 받은 뒤, 필요한 체스 말의 개수를 구하는 문제이다.

 

 

입력 조건에서 '값은 0보다 크거나 같고 10보다 작거나 같은 정수' 이 부분 때문에 시간을 조금 잡아먹었다.

 

입력을 받을 때 조건을 설정해놓아야하나 생각하다보니 좀 복잡할 것 같다고 생각해서 풀기 전에 다양한 방법들을 미리 생각해 보고 있었는데, '동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다.' 이 부분 때문에 금방 풀 수 있었던 것 같다.

 

 

풀이

이 문제의 핵심은 동혁이가 찾은 체스 말들의 개수가 주어진다는 것이다.

 

체스의 말들의 개수를 미리 위쪽에 선언해 준 다음, 찾은 체스 말의 개수를 Scanner를 통해 입력해주면 된다. 

 

import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int king = 1;
		int queen = 1;
		int rook = 2;
		int bishop = 2;
		int knight = 2;
		int pawn = 8;
		
		king -= sc.nextInt();
		queen -= sc.nextInt();
		rook -= sc.nextInt();
		bishop -= sc.nextInt();
		knight -= sc.nextInt();
		pawn -= sc.nextInt();
		
		System.out.print(king+" ");
		System.out.print(queen+" ");
		System.out.print(rook+" ");
		System.out.print(bishop+" ");
		System.out.print(knight+" ");
		System.out.print(pawn+" ");


	}
}

 

이 방법은 코드가 길다. 따라서 배열을 이용해서 하는 방법도 존재한다.

 

import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int chess[] = {1,1,2,2,2,8};
		int input[] = new int[6];
		for(int i =0;i<chess.length;i++) {
			input[i] = sc.nextInt();
		}
		for(int i =0;i<chess.length;i++) {
			System.out.print(chess[i]-input[i]+" ");
		}
	
	}
}

 

728x90