본문 바로가기
코딩테스트(알고리즘)/baekjoon

[baekjoon] 개미 3048 (Javascript)

by Cafe Mocha 2022. 6. 20.

3048번: 개미 (acmicpc.net)

 

3048번: 개미

T초가 지난 후에 개미의 순서를 출력한다. 첫 번째 개미 그룹은 왼쪽에서 오른쪽으로 움직이고, 두 번째 그룹은 반대 방향으로 움직인다.

www.acmicpc.net


접근 : 구현

 

단순 구현문제지만 어렵다... 접근 방법만 생각하면 금방 구현할 수 있지만 규칙을 찾아내는 것이 아직도 많이 약한것 같다. 시간이 해결해 줄꺼라고 생각하고 차근차근 풀고있다.

 

Javascript

let input = require("fs")
  .readFileSync("input.txt") //"/dev/stdin"
  .toString()
  .trim()
  .split("\n")
  .map((val) => val.trim());

function solution(input) {
  //input
  let [n1, n2] = input
    .shift()
    .split(" ")
    .map((v) => +v);

  let n1_arr = input[0].split("").reverse();
  let n2_arr = input[1].split("");

  let ant = [...n1_arr, ...n2_arr];
  let dir = [...new Array(n1).fill(1), ...new Array(n2).fill(-1)];

  let t = +input[2];

  while (t--) {
    const points = [];

    for (let i = 0; i < ant.length; i++) {
      if (dir[i] === 1 && dir[i + 1] === -1) {
        points.push(i);
      }
    }

    for (let i = 0; i < points.length; i++) {
      const point = points[i];
      const tmpAnt = ant[point];

      ant[point] = ant[point + 1];
      ant[point + 1] = tmpAnt;
      dir[point] = -1;
      dir[point + 1] = 1;
    }
  }

  console.log(ant.join(""));
}
solution(input);