[PYTHON] 3003번 킹, 퀸, 룩, 비숍, 나이트, 폰

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

     

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

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

    www.acmicpc.net

    문제 해석

    •  체스에 종류별로 필요한 피스 개수에서 input의 피스 개수를 뺀다.
    • input 값이 아래와 같이 띄어쓰기를 구분하여 들어오기 때문에 split(' ')을 해줘야 한다.
    0 1 2 2 2 7

    풀이

    • 첫 번째 시도 - 성공
      • 굳이 변수에 다 담을 필요가 없고, 체스에 필요한 피스 개수를 묶어 저장하지 않아 가독성이 떨어진다.
    a,b,c,d,e,f = map(int,input().split(' ')) # 각각 변수에 input의 피스의 개수를 담아
    print(1-a,1-b,2-c,2-d,2-e,8-f, end = ' ') # 체스 피스의 개수에서 빼줬다
    • 두 번째 시도 - 성공
    import sys
    
    userNums = list(map(int, sys.stdin.readline().strip().split(' ')))
    chessNums = [1,1,2,2,2,8]
    
    for i in range(6):
       print(chessNums[i] - userNums[i], end = " ")

     

    userNums = list(map(int, sys.stdin.readline().strip().split(' ')))
    • sys.stdin.readline()을 이용해 input값을 받아
    • 양쪽 공백을 strip()으로 제거하고
    • split(' ')을 이용해 공백을 기준으로 나눴다.
    • map을 통해 모든 요소를 숫자형(int)로 바꿨고 map은 객체를 반환하기 때문에
    • list에 담아 userNums에 저장하였다.
    for i in range(6):
    • for문을 이용해 체스 종류가 6개 임으로 6번을 반복하면서
    • 체스가 필요한 개수에 input이 가지고 있는 체스 피스를 빼주고 출력하였다.

     

    댓글