프라이D
프라이Develog(❁´◡`❁)
프라이D
전체 방문자
오늘
어제
  • ALL (378)
    • TDD, Cleancode with JavaScr.. (5)
    • 프로젝트 (32)
      • work (3)
      • 직접 만드는 기술 블로그 (2)
      • 데일리 옥션 (19)
      • 모락모락 (8)
    • Computer Science (1)
    • Algorithm & 자료구조 (94)
      • 알고리즘 w.JavaScript (53)
      • 자료구조 (5)
      • (인프런) 자바스크립트 알고리즘 문제풀이 (34)
    • JavaScript (45)
      • JavaScript (41)
      • 모던 자바스크립트 Deep Dive (4)
    • WEB (13)
    • 회고 (12)
    • TIL (109)
    • WIL (7)
    • Stacks (20)
      • React.js (6)
      • Next.js (1)
      • Redux (3)
      • Node.js (2)
      • GIT (2)
      • SAP (1)
    • 15일 메이킹 프로젝트 (15)
    • 이전 기록 (14)
    • ETC. (5)
    • ---------------2021 (6)
      • 내일배움단-웹개발 5주 (2)
      • 정보처리기사 (4)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • MySQL
  • 내일배움카드
  • Til
  • 내일배움단
  • nomadcoder
  • 국비지원
  • 비트마스크
  • JavaScript
  • 스파르타코딩클럽
  • nomadcoders
  • 자바스크립트비트마스크
  • 알고리즘
  • 투포인터알고리즘
  • 모던자바스크립트딥다이브
  • 코드스테이츠
  • 자바스크립트알고리즘
  • 코딩프로젝트
  • 2023 인프콘 후기
  • vanilaJS
  • 자바스크립트

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
프라이D

프라이Develog(❁´◡`❁)

Algorithm & 자료구조/알고리즘 w.JavaScript

[알고리즘] 백준 2941번: 크로아티아 알파벳 W_node.js

2022. 5. 11. 20:23

문제

 

2941번: 크로아티아 알파벳

예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z=

www.acmicpc.net

풀이

const readFileSyncAddress = '/dev/stdin';

const fs = require('fs');
let str = fs.readFileSync(readFileSyncAddress).toString().trim();

const croatian = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z='];
const solution = function (str) {
  for (let x of croatian) str = str.replaceAll(x, 'x');

  return str.length;
};

console.log(solution(str));
  • 현재 순회중인 크로아티안 알파벳 x와 일치하는 str의 요소는 'x' 문자열로 변경한 뒤 그 길이를 반환하였다.

  • 처음 문제에 접근할 때는, str.includes() 메서드를 이용해서 true일 때 str에서 해당 부분만 제외하고 재할당을 하는 방식으로 접근했다.
if(str.includes(croatian[i])) 
    str = str - str.substring(str.indexOf(croatian[i]),croatian.length);
  • 문자열에서 내가 원하는 부분을 추출해서 그 부분을 없애고 싶어서 - 를 해봤는데 (+는 되길래) NaN이 나왔다.
  • 찾아보니 + 연산에서는 값의 type을 검사하지만, - 연산은 숫자만을 대상으로 하기 때문에 type 검사를 하지 않는다고 한다. 숫자가 아닌 경우에는 쓸 수 없다.
  • substring에서 indexOf를 쓴 이유는 이 메서드가 가장 첫번째 인덱스를 반환하기 때문에, 다음 순회에서 중복된 값도 카운트하기 위해서 사용했다.
  • 같은 값이 나오면 카운트를 올리고, 해당 알파벳 부분은 제거한 다음에 남은 str의 길이를 카운트와 더해서 리턴하려고 했는데, 문자열에서 특정 부분을 추출하여 사용하는 것이 아니라면 replace 같은 메서드를 이용해서 특정 부분을 제거하거나 변경하는 것이 옳은 방법인 것 같다.

참고자료

  • https://codingcoding.tistory.com/1264

 

저작자표시 (새창열림)

'Algorithm & 자료구조 > 알고리즘 w.JavaScript' 카테고리의 다른 글

[알고리즘] 백준 1712번: 손익분기점 W_node.js  (0) 2022.05.20
[알고리즘] 백준 1316번: 그룹 단어 체커 W_node.js  (0) 2022.05.11
[알고리즘] 백준 5622번: 다이얼 W_node.js  (0) 2022.05.10
[알고리즘] 백준 1157번: 단어 공부 W_node.js  (0) 2022.05.01
[알고리즘] 백준 2675번: 문자열 반복 W_node.js  (0) 2022.05.01
    'Algorithm & 자료구조/알고리즘 w.JavaScript' 카테고리의 다른 글
    • [알고리즘] 백준 1712번: 손익분기점 W_node.js
    • [알고리즘] 백준 1316번: 그룹 단어 체커 W_node.js
    • [알고리즘] 백준 5622번: 다이얼 W_node.js
    • [알고리즘] 백준 1157번: 단어 공부 W_node.js
    프라이D
    프라이D
    틀린내용 정정 및 개선사항은 언제든지 댓글 달아주세요 :D

    티스토리툴바