✏️기록하는 즐거움
article thumbnail

Link

 

2577번: 숫자의 개수

첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다.

www.acmicpc.net

 

문제

세 개의 자연수 A, B, C가 주어질 때 A × B × C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오.
예를 들어 A = 150, B = 266, C = 427이라면 A × B × C = 150 × 266 × 427 = 17037300 이 되고, 계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다.

입력 > 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다.
출력 > 첫째 줄에는 A × B × C의 결과에 0 이 몇 번 쓰였는지 출력한다. 마찬가지로 둘째 줄부터 열 번째 줄까지 A × B × C의 결과에 1부터 9까지의 숫자가 각각 몇 번 쓰였는지 차례로 한 줄에 하나씩 출력한다.

| 예제 입력

150
266
427

| 예제 출력

3
1
0
2
0
0
0
2
0
0

 

제출

const input = (
  process.platform === "linux"
    ? require("fs").readFileSync("/dev/stdin").toString()
    : `150
      266
      427`
).split("\n");

const result = String(input[0] * input[1] * input[2]);

for (let i = 0; i < 10; i++) {
  console.log(result.split(i).length - 1);
}

 

 

 

풀이과정

 split() 메서드 를 사용해서 곱한 값을 i를 기준으로 나눈 배열의 개수를 출력한다.

 

console.log('17037300'.split(0)); // [ '17', '373', '', '' ]
console.log("17037300".split(3)); // [ '170', '7', '00' ]

 

결괏값인 17037300을 기준으로 split() 메서드를 사용해서 출력해보면

  • split(0)의 경우, 0을 기준으로 17/0/373/0/0으로 나뉘기 때문에 결과값은 [ '17', '373', '', '' ]
  • split(3)의 경우, 3을 기준으로 170/3/7/3/00으로 나뉘기 때문에 결과값은 [ '170', '7', '00' ]가 나오게 된다.

따라서 0부터 9까지 split(i)로 나눈 배열의 길이 -1을 해주면 결과값에서의 i의 개수를 알아낼 수 있다.

 

 이중 for문 을 사용한 풀이

const input = (
  process.platform === "linux"
    ? require("fs").readFileSync("/dev/stdin").toString()
    : `150
        266
        427`
).split("\n");

const result = String(input[0] * input[1] * input[2]);

for (let i = 0; i < 10; i++) {
  let count = 0;
  for (let j = 0; j < result.length; j++) {
    if (Number(result[j]) === i) {
      count++;
    }
  }
  console.log(count);
}

🔼 세 수를 곱한 result 값을 0부터 9까지의 숫자와 비교해서 같을 경우에 count를 증가시키고 해당 count를 출력한다.

 

개념

String.split()

  • String 객체를 지정한 문자를 기준으로 여러 개의 문자열로 나눈다.
  • 아래는 split()을 사용한 또 다른 문제이다.
 

[백준] 10926: ??! (javascript)

Link 10926번: ??! 준하는 사이트에 회원가입을 하다가 joonas라는 아이디가 이미 존재하는 것을 보고 놀랐다. 준하는 놀람을 ??!로 표현한다. 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디

codingmyoni.tistory.com


Comment

 

profile

✏️기록하는 즐거움

@nor_coding

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