3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰
첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다.
www.acmicpc.net
각각의 피스에 올바른 세트일 때의 피스 개수에서 현재 동혁이가 찾은 피스의 개수를 빼면
몇 개를 더하거나 빼야 올바른 세트가 되는지 구할 수 있다.
입력할 때, 킹, 퀸, 룩, 비숍, 나이트, 폰 순서대로 개수가 입력되므로,
이 순서대로 개수를 저장하는 배열을 만들어서 배열의 요소를 인덱스로 접근해서 값을 구하면 된다.
먼저, 올바른 세트일 때의 킹, 퀸, 룩, 비숍, 나이트, 폰 피스의 개수를 순서대로 저장하는 배열 set를 초기화한다.
여기서 배열의 크기는 6이 된다. (킹, 퀸, 룩, 비숍, 나이트, 폰 총 6가지 종류의 피스가 존재하므로)
set[0] = 킹 피스의 개수
set[1] = 퀸 피스의 개수
set[2] = 룩 피스의 개수
set[3] = 비숍 피스의 개수
set[4] = 나이트 피스의 개수
set[5] = 폰 피스의 개수
그 다음, 동혁이가 찾은 킹, 퀸, 룩, 비숍, 나이트, 폰 피스의 개수를 순서대로 저장할 배열 now를 선언한다.
여기서도 배열의 크기는 6이 된다.
반복문을 사용해서 킹, 퀸, 룩, 비숍, 나이트, 폰 피스의 개수를 순서대로 입력받아서
now 배열의 인덱스 0부터 5까지의 각 요소에 저장한다.
이때, 반복 횟수는 now 배열의 크기인 6이다.
마지막으로, 몇 개를 더하거나 빼야 올바른 세트가 되는지 계산해서 출력하면 된다.
계산할 때는 위에서 언급했듯이,
각각의 피스에 올바른 세트일 때의 피스 개수에서 현재 동혁이가 찾은 피스의 개수를 빼면 된다.
반복문을 사용해서 더하거나 빼야 할 킹, 퀸, 룩, 비숍, 나이트, 폰 피스의 개수를 순서대로 출력한다.
#include <stdio.h>
int main(void) {
int set[6] = {1, 1, 2, 2, 2, 8}; // 올바른 피스 개수 (킹1, 퀸1, 룩2, 비숍2, 나이트2, 폰8)
int now[6]; // 동혁이가 찾은 피스의 개수
for (int i = 0; i < 6; i++) // 킹, 퀸, 룩, 비숍, 나이트, 폰 순서로
scanf("%d", &now[i]); // 동혁이가 찾은 피스의 개수를 입력받아서 now 배열에 저장
for (int i = 0; i < 6; i++) // 킹, 퀸, 룩, 비숍, 나이트, 폰 순서로
printf("%d ", set[i] - now[i]); // 몇 개를 더하거나 빼야 올바른 세트가 되는지 출력
// (올바른 개수 - 찾은 개수)
return 0;
}
'PS > 백준' 카테고리의 다른 글
[백준] 2588번: 곱셈 [C] (0) | 2023.01.02 |
---|---|
[백준] 10430번: 나머지 [C] (0) | 2023.01.02 |
[백준] 18108번: 1998년생인 내가 태국에서는 2541년생?! [C] (0) | 2022.12.30 |
[백준] 10926번: ??! [C / C++] (0) | 2022.12.30 |
[백준] 10869번: 사칙연산 [C] (1) | 2022.12.29 |