✏️기록하는 즐거움
article thumbnail

Link

 

10430번: 나머지

첫째 줄에 A, B, C가 순서대로 주어진다. (2 ≤ A, B, C ≤ 10000)

www.acmicpc.net

문제

(A+B)%C는 ((A%C) + (B%C))%C 와 같을까?
(A×B)%C는 ((A%C) × (B%C))%C 와 같을까?
세 수 A, B, C가 주어졌을 때, 위의 네 가지 값을 구하는 프로그램을 작성하시오.

입력 > 첫째 줄에 A, B, C가 순서대로 주어진다. (2 ≤ A, B, C ≤ 10000)
출력 > 첫째 줄에 (A+B)%C, 둘째 줄에 ((A%C) + (B%C))%C, 셋째 줄에 (A×B)%C, 넷째 줄에 ((A%C) × (B%C))%C를 출력한다.

 

제출

const fs = require("fs");

const input = (
  process.platform === "linux"
    ? fs.readFileSync("/dev/stdin").toString()
    : `5 8 4`
)
  .split(" ")
  .map(Number);

const [A, B, C] = input;

console.log((A + B) % C);
console.log(((A % C) + (B % C)) % C);
console.log((A * B) % C);
console.log(((A % C) * (B % C)) % C);
  • 10926, 18108번과 다르게 이 문제의 입력 예제 사이에는 공백이 있으므로 trim이 아닌 split을 사용해준다.

 

개념

구조 분해 할당(Destructuring assignment)

  • 배열이나 객체의 속성을 분리해서 그 값을 개별 변수에 담을 수 있게 하는 JavaScript 표현식
let a, b, rest;
[a, b] = [10, 20];
console.log(a, b); // 10 20

[a, b, ...rest] = [10, 20, 30, 40, 50];
console.log(`a={$a}, b={$b}, rest={$rest}`); // a=10, b=20, rest=[30, 40, 50]

// 배열 분해하기
// y에 x[0], z에 x[1]을 할당
// 배열 요소를 변수에 직접 할당하는 것보다 코드 양이 줄어든다.
// const y = x[0];
// const z = x[1];
const x = [1, 2, 3, 4, 5];
const [y, z] = x;
console.log(y, z); // 1 2

 

map()

  • map이 주어진 함수(callbackFunc)를 배열의 각 요소에 대해 한번씩 순서대로 불러 함수의 반환 값을 모아 새로운 배열을 만든다.
arr.map(callbackFunc(currentValue, index, array)[, thisArg])
  • callbackFunc으로 새로운 배열 요소를 생성하는 함수를 작성한다.
    • currentValue : 현채 처리할 요소
    • index (optional) : currentValue의 인덱스
    • array (optional) : map()을 호출한 배열
  • thisArg (optional) : callback을 실행할 때 this로 사용되는 값
const stringArr = ['1', '2', '3'];

const numArr = stringArr.map(function(element) {
	return parseInt(element, 10);
}

console.log(numArr); // [1, 2, 3]
  • 기본 표현식 외에 더 간단하게 표현할 수 있는 방법
    • 화살표 함수(Arrow Functio) 사용
      stringArr.map(element => parseInt(element));​
    • Number 사용
      stringArr.map(Number);​
      단, Number는 parseInt와는 다르게 float나 지수 표현도 반환한다.
      ['1.1', '2.2e2', '3e300'].map(Number); // [1.1, 220, 3e+300]​

 

 


Comment

처음에는 구조 분해 할당으로 분해하지 않고 input[0], input[1], ... 의 형태로 작성해서 제출했다.

그러다 보니 코드 작성에 번거로움이 느껴졌고 찾아보니 구조 분해 할당을 사용해서 간단하게 변수에 값을 할당할 수 있었다.

아는 것이 힘이라는 걸 느꼈다..😌

profile

✏️기록하는 즐거움

@nor_coding

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!