본문 바로가기
개발/알고리즘

백준(BOJ) 1522 문자열 교환

by deokkk 2024. 1. 15.
반응형

문제

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

풀이

첫째 줄에 필요한 교환의 회수의 최솟값을 출력한다.

 

순회하면서 외부 a갯수와 내부 b갯수를 체크한다 → 순회하며 계산을 쉽게 하기위해 문자열을 붙였다.

b를 교환하게 되는 최소 교환 횟수를 업데이트하고 최종 출력한다.

소스 코드

const filename =
  process.platform === "linux" ? "/dev/stdin" : "./test-input.txt";
const input = require("fs")
  .readFileSync(filename)
  .toString()
  .trim()
  .split("\n");

const str = input[0].trim();
const cnt = (str.match(/a/g) || []).length;

const circle = str + str;

let answer = Number.MAX_SAFE_INTEGER;
for (let i = 0; i < circle.length - cnt; i++) {
  const temp = circle.slice(i, i + cnt);
  answer = Math.min(answer, (temp.match(/b/g) || []).length);
}

console.log(answer);

 

반응형

'개발 > 알고리즘' 카테고리의 다른 글

백준(BOJ) 1008 A/B  (0) 2024.01.14
백준(BOJ) 10998 AxB  (0) 2024.01.13
백준(BOJ) 1001 A-B  (0) 2024.01.12
백준(BOJ) 1000 A+B  (0) 2024.01.11
백준(BOJ) 2557 Hello World  (0) 2024.01.10

댓글