본문 바로가기

백준5637 - 가장 긴 단어 node.js 본문

개발/algorithm

백준5637 - 가장 긴 단어 node.js

자전하는명왕성 2024. 3. 22. 10:03

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

해당 문제는 전체 텍스트에서 가장 긴 단어를 소문자로 출력하는 문제다.

다만, 단어는 영문과 하이픈으로만 구성된 단어로만 친다.

 

문제 해결 방식

먼저 각 문자별로 나누는 과정이 필요했는데, 이때 flat 메서드로 2차원 배열의 문자열을 병합했다.

이후 각 문자열마다 영문, 하이픈만을 추출하는 방식은 정규표현식을 적용하였다. (해당 정규표현식은 gpt를 활용)

그리고 문자열 순회마다 해당 문자열의 길이가 최댓값보다 큰지 확인한 뒤, 크다면 가장 큰 값을 갱신하는 방식으로 로직을 마무리지었다.

 

전체 소스 코드

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

function solution(data) {
  const words = data
    .join(" ")
    .split(" ")
    .filter((el) => el !== "");

  words.pop();
  let max = 0;
  let result = null;

  const pattern = /[^a-zA-Z-]/g;
  words.forEach((el) => {
    const word = el.replace(pattern, "");
    if (word.length > max) {
      max = word.length;
      result = word;
    }
  });

  console.log(result.toLowerCase());
}

solution(input);
Comments