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

    2022.08.25

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

     

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

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

    www.acmicpc.net

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

    문제

    • 체스는 총 16개의 피스를 사용하며, 킹 1개, 퀸 1개, 룩 2개, 비숍 2개, 나이트 2개, 폰 8개로 구성.흰색 피스의 개수가 주어졌을 때, 몇 개가 더 필요하거나 덜어야되는지 코드 작성.
    • 검정색 피스는 모두 있고, 흰색 피스는 개수가 올바르지 않음.
    • 첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다.
    • 첫째 줄에 입력에서 주어진 순서대로 몇 개의 피스를 더하거나 빼야 되는지를 출력한다. 만약 수가 양수라면 동혁이는 그 개수 만큼 피스를 더해야 하는 것이고, 음수라면 제거해야 하는 것이다.

    풀이

    • 검정 피스와 흰색 피스를 배열을 비교하여 결과값 도출했습니다.
      • 검정 피스의 요소 값에서 흰색 피스를 빼면 필요한 개수만큼 결과값이 나옵니다.
    • for문을 통해 인덱스 값을 반복하여 연산하며, result값에 누적됩니다.
    const fs = require('fs');
    const inputData = fs.readFileSync(0,'utf8').toString().trim().split(' ')
    
    //const inputData =[2,1,2,1,2,1]
    
    const blackNum = [1,1,2,2,2,8]
    let result = ''
    
    for(i = 0; i < 6; i++){
        subtract = (parseInt(blackNum[i]) - parseInt(inputData[i]))
        result += subtract +' ' 
    }
    
    console.log(result)
    • map 매서드로 풀어보기
      • map에 익숙해지기 위해 map으로도 한번 풀어봤다. 잘 이용하면 다른 코드들도 간단하게 짤 수 있을 거 같다.
    const fs = require('fs');
    const inputData = fs.readFileSync(0,'utf8').toString().trim().split(' ').map(Number) //[2,1,2,1,2,1]
    
    const blackNum = [1,1,2,2,2,8]
    
    const result = blackNum.map((ele,idx) => ele - inputData[idx]); //blackNum 각 요소에서 inputData값의 요소들을 빼줌.
    //console.log(result); [ -1, 0, 0, 1, 0, 7 ]
    console.log(result.join(' ')) // 출력값이 띄어쓰기로 구분 되어 있으므로 join을 이용하여 출력함. -1 0 0 1 0 7

    'algorithm > 백준' 카테고리의 다른 글

    [JS] 1546 평균  (0) 2022.09.09
    [JS] 10818 최소,최대 for문/Math 메서드  (0) 2022.09.06
    [JS] 1110 더하기 사이클 문자열 / 숫자  (0) 2022.08.25
    [JS] 10951 A+B-4  (0) 2022.08.23
    [JS] A+B-5 for/while/shift  (0) 2022.08.23

    댓글