2023.03.11

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

현재 있는 체스 피스의 개수가 기존에 있어야 할 피스 개수와 맞는지 출력한다.


이전 문제들과 달리 입력받는 개수가 많다. c1, c2, c3… 이런식으로 변수를 작성해도 괜찮지만, 매번 입력마다 저 변수를 모두 작성하기는 어렵다.


이럴때 필요한 것이 리스트이다.

리스트란, 데이터들을 순서대로 배치해서 관리하는 자료 구조이다.


예를 들면, 학생들이 많은 경우 학번을 붙여서 조회가 가능한데, 동일한 이름을 가지더라도 학번을 이용하면 누가 누구인지 분류가 가능하다.

student = [ 'sara', 'sara' ]


sara 라는 학생이 2명있다고 하는 경우 각각 student[0], student[1]로 접근이 가능하다.


나중에 첫번째 sara의 이름을 sarah 로 바꿀때에도 student[0] = ‘sarah’ 이런식으로 작성하면 된다.


주의!

리스트는 배열이 아닙니다… (index의 유무가 있는데요. 설명을 위해서는 메모리와 노드를 설명해야하는데 참고자료로 대신 설명 드립니다.)


우선 한 세트로 인식하는 chess 리스트를 아래와 같이 작성한다. chess = [1, 1, 2, 2, 2, 8] 이렇게 작성하고 입력한 체스 리스트와 비교해서 출력하면 된다.


입력

list 형태로 적용해야되기 때문에 메소드 list()를 이용한다. 이전 문제에서 본 것 같이 map 을 통해서 각각의 값을 int로 두고 공백에 따라 분리한다. chess_list = list(map(int, input().split()))


기본 세트와 비교

이제 리스트들이 있는데, 해당 리스트들을 서로 비교해야한다. 이때 for문을 이용하는데,

for i in range(0, 6):
  result += str(chess[i]-chess_list[i]) + ' '

여기서 range(0,6) 을 range(6)으로 둘 수 있다. 0~5까지를 i로 두고 각각 아래에 해당하는 코드를 실행하는 것을 의미한다. 6은 포함하지 않기 때문에 주의하자.


기존 세트의 체스 개수, 입력 받은 값을 빼서 str로 둔다. 이를 실제 출력에 맞도록 공백을 추가하면 result 그대로 답변이 된다.

출력

print(result)


풀이

if __name__ == '__main__':
    chess = [1, 1, 2, 2, 2, 8]
    chess_list = list(map(int, input().split()))
    result = ''
    for i in range(0, 6):
        result += str(chess[i]-chess_list[i]) + ' '
    print(result)

Tags:

Categories:

Updated:

Leave a comment