본문 바로가기
개발 노트/백준, 프로그래머스 풀이

[백준 22351/javascript] 수학은 체육과목 입니다 3

by tokkiC 2022. 9. 22.

첫문자를 숫자로 바꿔 첫문자를 기억할 i, 마지막을 기억할 j 를 만들어

j를 하나씩 문자열에 붙여가며 원문자열과 비교, 원문자열보다 길다면 시작 숫자를 1 높여서 다시 

j를 높이며 원문자열과 비교, 같은 문자열이 나온다면 그때의 i j 를 출력해주면 되는 문제이다

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

 

22351번: 수학은 체육과목 입니다 3

이환이의 선생님이 부른 두 정수 $A$와 $B$를 공백으로 구분하여 출력하라. 만약 가능한 답이 두 가지 이상이라면, 그중 $A$가 가장 작은 것을 출력하라. 이환이는 항상 정확한 답을 쓰기 때문에,

www.acmicpc.net

let input = [];

const readline = require("readline").createInterface({
  input: process.stdin,
  output: process.stdout,
});

readline.on("line", (line) => {
  input.push(line);
});

readline.on("close", () => {
  solution(input);
  process.exit();
});

const solution = (inp) => {
  let str = inp[0];
  let strlen = str.length;
  let n = Number(str[0]);
  let ans = [];
  // 첫문자를 첫 시작 숫자로 잡고, 1씩 큰 수를 문자열로 붙이고 원문자열과 비교해서 첫 문자를 늘려가며 원문자와 같은 문자열을 만드는 수를 찾는다
  for (let i = n; i < 1000; i++) {
    let s = "";
    for (let j = i; j < 1000; j++) {
      s += String(j);
      // 쌓은 문자열 s 와 원 문자열 str 의 길이가 같을때
      if (s.length === strlen) {
        // s가 원문자열과 같다면 시작 숫자와 끝 숫자를 출력하자
        if (s === str) {
          ans.push(i);
          ans.push(j);
          console.log(ans.join(" "));
          return;
        }
        // 쌓은 문자열이 원 문자열보다 길면 시작 숫자 i 를 늘려준다
      } else if (s.length > strlen) {
        break;
      }
    }
  }
};

댓글