728x90

 

문제 : 3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰 (acmicpc.net)

 

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

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

www.acmicpc.net

 

 

큰 틀에서의 로직은

갖춰야할 장기말의 수 - 입력 받은 수

           A                      -             B

 

즉 A-B를 각각 배열로 만들어서 for문을 돌려 인덱스번호 별로 호출하여 각 번호를 빼주는 것이다

answer = A[i] - B[i]

 

갖춰야할 장기말의 수 : 변수명 horse

int[] horse = {1,1,2,2,2,8};

입력받은 수 : 변수명 st

StringTokenizer st = new StringTokenizer(br.readLine(), " ");

 

 

st를 변수명 temp에 배열로 집어넣는다 

for(int i=0; i<horse.length;i++){
    temp[i] = Integer.parseInt(st.nextToken());

 

각각을 배열로 만들어서 for문을 배열길이 총6만큼 반복 시켜서 

for문의 i인덱스번호만큼 각 지정 숫자끼리 빼는 것이다

그리고 마지막 출력을 공백 있는 정수나 str로 해야 하기에 배열로 그대로 출력하면 틀리니 주의

(필자가 이래서 틀림처림됨)

        for(int i=0; i<horse.length;i++){
            temp[i] = Integer.parseInt(st.nextToken());
            answer += horse[i] - temp[i] + " ";
        }

 

 

정답 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
                BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");

        int[] horse = {1,1,2,2,2,8};
        int[] temp = new int[6];
        String answer = "";

        for(int i=0; i<horse.length;i++){
            temp[i] = Integer.parseInt(st.nextToken());
            answer += horse[i] - temp[i] + " ";
        }
        System.out.println(answer);

    }
}
728x90
반응형

+ Recent posts