파티가 끝나고 난 뒤

2564 단어 백준백준

백준 - 파티가 끝나고 난 뒤

문제 설명

문제

파티가 끝나고 나면, 사람들은 누가 파티에 왔는지와 얼마나 많은 사람들이 왔는지를 궁금해한다. 

보통 파티는 매우 크게 열리기 때문에, 정확하게 몇 명이 참가했는지 알 수가 없다.

지난주 토요일에 상근이는 자신의 3학년 진학을 기념하면서 매우 성대한 파티를 열었다.

그리고, 상근이는 1m2당 몇 명의 사람이 있었는지 알고있다.

상근이의 파티는 정말 엄청난 규모였기 때문에, 대부분의 신문에도 기사가 실렸다. 

상근이는 서로 다른 5개의 신문을 보면서 그 기사에 적혀져있는 참가자의 수를 적었다.

상근이는 자신이 알고있는 참가자의 수가 정확하다고 생각한다. 

각 신문 기사에 실려있는 참가자의 수가 몇 명 만큼 잘못되어있는지 구하는 프로그램을 작성하시오.

입력

첫째 줄에 1m2당 사람의 수 L (1 ≤ L ≤ 10)과 파티가 열렸던 곳의 넓이 P (1 ≤ P ≤ 1000)가 주어진다.

둘째 줄에는 각 기사에 실려있는 참가자의 수가 주어진다. 106보다 작은 양의 정수 5개가 주어진다.

출력

출력은 첫째 줄에 다섯 개의 숫자를 출력해야 한다. 이 숫자는 상근이가 계산한 참가자의 수와  각 기사에 적혀있는 참가자의 수의 차이이다.

예제 입력 1

1 10
10 10 10 10 10

예제 출력 1

0 0 0 0 0

예제 입력 2

5 20
99 101 1000 0 97

예제 출력 2

-1 1 900 -100 -3

제출

처음에 예제 입력값을 보고 저런식으로 떼져서 들어오는건 어떻게 받아야 할까? 생각을 했다

fs로 입력을 받아오면 배열로 들어오니까 \n으로 먼저 두개의 배열을 받고 2중 배열 형태일테니까 그걸 이용해보기로 했다

const fs = require('fs')
var input = fs.readFileSync('/dev/stdin').toString().split('\n')

var people = Number(input[0][0])
var m2 = Number(input[0][1])

var all = people * m2
input[1].map(item => (console.log(Number(item)-all)))

이렇게 했는데 에러가 떠서 그냥 2중 배열을 또 split으로 풀어보았다

그리고 내가 map 함수를 잘 모르니까 잘 아는 for로 반복을 돌렸다

const fs = require('fs')
var input = fs.readFileSync('/dev/stdin').toString().split('\n')

var first = input[0].split(' ')
var second = input[1].split(' ')

var people = Number(first[0])
var m2 = Number(first[1])
var all = people * m2

for(i=0; i<5; i++){
    var num = Number(second[i])
    console.log(num-all)
}

그렇게 하니까 정답 처리가 되었다

그래서 map 함수가 틀렸나 확인을 하기위해 아래와 같이 작성을 해보았다

const fs = require('fs')
var input = fs.readFileSync('/dev/stdin').toString().split('\n')

var people = Number(input[0][0])
var m2 = Number(input[0][1])
var all = people * m2

for(i=0; i<5; i++){
    var num = Number(input[1][i])
    console.log(num-all)
}

하지만 이것도 틀렸다고 나왔다

그래서 입력값을 받는 부분에 문제인 것을 알았고 앞으로 여러줄을 받게되면 우선 줄로 분할한 다음

그다음 칸으로 분할해야겠다고 알게되었다

좋은 웹페이지 즐겨찾기