Post

[BOJ] 3186 - 소변기

[백준] 3186 - 소변기

긁어온 코드를 통해 입력을 받으면 입력이 더이상 들어오지 않을 때까지 입력을 받는다. 마지막 줄에 의미없는 입력이 있을 경우 주어진 횟수만큼만 입력을 받던 기존 풀이 방식과 달리 문제가 발생한다.. 따라서 원하는만큼만 입력을 받고 끝났다면 rl.close()를 반드시 적어서 입력을 닫아야 한다는 중요한 교훈을 얻었다.. 잠시 눈물 좀 닦고..

소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
const readline = require("readline");

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

let k, l, n, arr;
let i = 0;
rl.on("line", function (line) {
  tmp = line.split(" ");
  if (i == 0) {
    k = tmp[0];
    l = tmp[1];
    n = tmp[2];
  } else if(i==1) {
    arr = line;
  }
  else rl.close();
  i += 1;
}).on("close", function () {
  let cnt = 0;
  let now = 0,
    t = 0;
  for (let i in arr) {
    if (now == 0) {
      if (arr[i] == 0) {
        if (t >= k) {
          t = 1;
          now = 1;
        } else t = 0;
      } else {
        t += 1;
        if (t >= k) {
          t = 0;
          now = 1;
        }
      }
    } else {
      if (arr[i] == 0) {
        t += 1;
        if (t >= l) {
          cnt+=1;
          t = 0;
          now = 0;
          console.log(i * 1 + 1);
        }
      } else t = 0;
    }
  }
  if (now == 1) console.log(n*1 + l*1 - t*1);
  else if (cnt == 0) console.log("NIKAD");
  process.exit();
});
This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.