본문 바로가기
Python/백준 예제 풀이 모음

[백준] [Python] 3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰

by Dailybook406 2022. 10. 6.

[ 문제 ]

동혁이는 오래된 창고를 뒤지다가 낡은 체스판과 피스를 발견했다.

체스판의 먼지를 털어내고 걸레로 닦으니 그럭저럭 쓸만한 체스판이 되었다. 하지만, 검정색 피스는 모두 있었으나, 흰색 피스는 개수가 올바르지 않았다.

체스는 총 16개의 피스를 사용하며, 킹 1개, 퀸 1개, 룩 2개, 비숍 2개, 나이트 2개, 폰 8개로 구성되어 있다.

동혁이가 발견한 흰색 피스의 개수가 주어졌을 때, 몇 개를 더하거나 빼야 올바른 세트가 되는지 구하는 프로그램을 작성하시오.

[ 조건 ]

<입력>
첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다.
<출력>
첫째 줄에 입력에서 주어진 순서대로 몇 개의 피스를 더하거나 빼야 되는지를 출력한다. 만약 수가 양수라면 동혁이는 그 개수 만큼 피스를 더해야 하는 것이고, 음수라면 제거해야 하는 것이다.

[ 풀이 ]

# My solution
piece = [1,1,2,2,2,8]	#1

have_piece = list(map(int, input().split()))	#2

for i in range(len(piece)) :	#3
    print(piece[i]-have_piece[i], end=' ')

실행결과

0 1 2 2 2 7	# 입력1
1 0 0 0 0 1 	# 출력1

2 1 2 1 2 1	# 입력2
-1 0 0 1 0 7 	# 출력2

#1

문제에서 알려준 체스의 총 피스 개수를 리스트로 생성한다.

 

 

#2

띄어쓰기를 기준으로 한 번에 값을 입력받기 때문에 이전 포스트에서 알아보았던 map()함수를 이용해 입력을 받는다.

+ map()함수를 이용하여 변수 한 번에 입력받기

 

이때 1에서 생성했던 리스트의 값들과 차이를 구하기 위해서 입력받은 값들도 list()함수를 통해 리스트로 만들어준다.

 

 

#3

for 반복문을 이용하여 각 리스트의 요소끼리 뺄셈을 해준다.

 

이때 반복문의 범위는 len()함수를 사용하여 리스트 요소의 개수만큼 반복한다.

 

또한 단순히 print()를 이용하여 출력하면 한 번에 한 줄에 값을 출력할 수 없기 때문에, print()의 end옵션을 이용하여 각 출력값들 사이 한 칸씩 띄어서 한 줄에 출력하도록 한다.

더보기

 

다양한 결과를 출력하기 위해서 사용되는 print()함수에는 여러 옵션을 지원한다.

 

그중 대표적으로 sep와 end의 옵션이 있다.

 

1) sep

sep은 separation의 약자로, 구분자를 의미한다.

 

print()를 통해 여러 값을 출력할 때 각각의 값들 사이에 출력할 구분자를 정할 수 있다.

print('P','Y','T','H','O','N', sep='@')		# 입력1

print('J','A','C','K', sep='+')			# 입력2

실행결과

P@Y@T@H@O@N	# 출력1
J+A+C+K		# 출력2

 

사용법은 위의 예시와 같이 [ sep=' ' ]의 형태로 사용하며, 따옴표 사이에 원하는 구분자를 입력하면 된다.

 

 2) end

end옵션은 print()함수가 줄바꿈을 하지 않고 이후의 출력값을 이어서 출력할 수 있게 해준다.

print('John', end='')
print('Jack')

실행결과

JohnJack

 

sep와 같이 [ end=' ' ]의 형태로 사용하며, 마찬가지로 구분자로 사용할 수 있어서 sep와 기능은 비슷하나,
end옵션은 print()함수를 여러 번 사용하여 출력하는 경우 사용한다.

print('Hello', end='@')
print('Python')

실행결과

Hello@Python

 

 


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

 

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

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

www.acmicpc.net

 

댓글