본문 바로가기
백준

[백준] 단계별로 풀어보기(단계:1,입출력과 사칙연산,JAVA) 3003번, 킹, 퀸, 룩, 비숍, 나이트, 폰

by 열정적인 이찬형 2022. 8. 16.

문제 링크

 

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

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

www.acmicpc.net


주의사항

  • JAVA를 사용하여 프로그램을 사용하였습니다.
  • 백준에서 코드를 작성하였을 때 아래 형태에서 Main에서 결과가 출력되어야 합니다.
public class Main{ 	
	public static void main(String[] args){
    }
}

문제 설명


접근 방법

 

이 문제에 핵심은

 

1. 체스판의 피스가 주어졌을 때 각 피스를 몇 개를 더해야 올바른 세트가 되는지 결과로 출력합니다.

2. 킹 : 1개, 퀸 : 1개, 룩 : 2개, 비숍 : 2개, 나이트 : 2개, 폰 : 8개가 되어야 올바른 세트입니다.

 

알고리즘 진행 순서.

 

1. 입력되는 정보들을 저장합니다.

 

2. 입력된 피스를 이용해서 필요한 피스들을 구합니다.

 

3. 필요한 피스들을 결과로 출력합니다.

 

 

 

예제입력 1

 

1. 입력되는 정보들을 저장합니다.

 

비숍 나이트
0 1 2 2 2 7

 

2. 입력된 피스를 이용해서 필요한 피스들을 구합니다.

 

비숍 나이트
1 1 2 2 2 8
0 1 2 2 2 7
1 0 0 0 0 1

 

3. 필요한 피스들을 결과로 출력합니다.

 

비숍 나이트
1 0 0 0 0 1

 

결과로 [1, 0, 0, 0, 0, 1]을 출력합니다.

 

  • BufferedReader를 사용하여 입력 값을 받았습니다.
  • StringTokenizer를 이용하여 입력된 정보들을 띄어쓰기 기준으로 나누었습니다.
  • (올바른 세트의 피스 - 입력된 피스)를 진행하며 필요한 피스의 정보를 구합니다.
  • 올바른 세트를 만들기 위해 필요한 피스의 정보를 BufferedWriter 저장하였습니다.
  • BufferedWriter에 저장된 결과값을 출력하였습니다.

 

import java.io.*;
import java.util.HashMap;
import java.util.StringTokenizer;

public class Main {
    static int[] piece = {1, 1, 2, 2, 2, 8};	//올바른 세트의 피스 개수
    public static void main(String[] args) throws IOException {
        //입력값 처리하는 BufferedReader
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        //결과값 출력하는 BufferedWriter
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st = new StringTokenizer(br.readLine()," ");
        //올바른 피스에서 입력된 피스를 뺀 결과값 BufferedWriter 저장
        for(int i=0;i<6;i++){
            piece[i] -= Integer.parseInt(st.nextToken());
            bw.write(piece[i] + " ");
        }
        bw.flush();		//결과 출력
        bw.close();
        br.close();
    }
}

댓글