Published on

2475, 2557, 2558

검증수 (2475번)

처음 제출한 답 (결과 : 틀렸습니다)

const input = require('fs').readFileSync('/dev/stdin').toString().trim().split(' ')
const verifyNumber = input.reduce((a, b) => Number(a) + Number(b) ** 2)
console.log(verifyNumber % 10)

두번째 제출한 답 (결과 : 틀렸습니다)

const input = require('fs')
  .readFileSync('/dev/stdin')
  .toString()
  .trim()
  .split(' ')
  .reduce((a, b) => Number(a) + Math.pow(Number(b), 2))
console.log(input % 10)

세번째 제출한 답 (결과 : 맞았습니다!!)

const input = require('fs')
  .readFileSync('/dev/stdin')
  .toString()
  .trim()
  .split(' ')
  .map((i) => Math.pow(Number(i), 2))
  .reduce((a, b) => a + b)
console.log(input % 10)

문제

컴퓨터를 제조하는 회사인 KOI 전자에서는 제조하는 컴퓨터마다 6자리의 고유번호를 매긴다.
고유번호의 처음 5자리에는 00000부터 99999까지의 수 중 하나가 주어지며 6번째 자리에는 검증수가 들어간다.
검증수는 고유번호의 처음 5자리에 들어가는 5개의 숫자를 각각 제곱한 수의 합을 10으로 나눈 나머지이다.

예를 들어 고유번호의 처음 5자리의 숫자들이 04256이면, 각 숫자를 제곱한 수들의 합 0+16+4+25+36 = 81 을 10으로 나눈 나머지인 1이 검증수이다.

입력

첫째 줄에 고유번호의 처음 5자리의 숫자들이 빈칸을 사이에 두고 하나씩 주어진다.

출력

첫째 줄에 검증수를 출력한다.

혹시나 싶어 첫번째 틀렸던 답을 map과 reduce를 함께 써서 다시 제출해봤다.

const input = require('fs').readFileSync('/dev/stdin').toString().trim().split(' ')
const verifyNumber = input.map((i) => Number(i) ** 2).reduce((a, b) => a + b)
console.log(verifyNumber % 10)

통과됐다. ** 은 죄가 없었다.

굳이 reduce를 쓰지 않아도 되는 문제에 뭔가 써보고 싶어서 넣었는데.. 그 덕에 내가 기존에 쓰던 방식에 고쳐야할 부분이 있다는 것을 깨달았던 좋은 문제였다.


Hello World (2557번)

console.log('Hello World!')

문제

Hello World!를 출력하시오.

입력

없음

출력

Hello World!를 출력하시오.

마땅히 쓸 말이 없는 문제였다. 여러 방법이 있겠지만 그 중 가장 간단한게 최고같음.


A+B - 2 (2558번)

const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').map(Number)
console.log(input[0] + input[1])

문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 A, 둘째 줄에 B가 주어진다. (0 < A, B < 10)

출력

첫째 줄에 A+B를 출력한다.

(0 < A, B < 10) 라는 조건이 달려있긴 했는데, 이 값을 벗어나는 테스트케이스가 주어진다는 말도 없고 해서 그냥 덧셈했다.

그래도 변수명은 만들어서 해야겠다. (취미라지만 그래도 뭔가 알아볼 수 있는 한도 내에서 최대한 줄여야 할 것 같은 압박감이 있어서..)