Poylib
기록형 프론트엔드
Poylib
전체 방문자
오늘
어제
  • 분류 전체보기 (91)
    • Programing (38)
      • Javascript (17)
      • Typescript (1)
      • React (9)
      • React-Native (6)
      • Git (4)
      • Next (1)
    • Study (36)
      • Algorithm (35)
      • Etc. (1)
    • Record (17)
      • Memoirs (12)
      • Group (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 회고
  • 백준
  • Error
  • vite
  • react
  • Object
  • 코딩테스트
  • 리액트
  • 자바스크립트
  • 프로그래머스
  • 기초
  • javascript
  • 알고리즘
  • ReactNative
  • react-native
  • Git
  • typescript
  • 코칭스터디

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Poylib

기록형 프론트엔드

[BEAKJOON / node.js] 12904 A와 B
Study/Algorithm

[BEAKJOON / node.js] 12904 A와 B

2022. 6. 16. 15:07
https://www.acmicpc.net/problem/12904

//test.txt
B
ABBA

sol1 - ❌

let [S,T] = require('fs').readFileSync('test.txt').toString().trim().split('\n');
let arr = S.split('');
function solution(arr,T) {
  while(T.length !== arr.length) {
    arr.push('A');
    if(T.length === arr.length) break;
    arr.reverse().push('B');
    arr.push("A");
  }
  return arr.join('') === T ? 1 : 0
};
console.log(solution(arr,T));
//1

S에 문제의 조건인 A를 추가하고, 뒤집은 후 B를 추가하는 식으로 해결했다. push()를 쓰기 위해 split으로 문자열을 배열로 바꿔주었고, T의 문자열 길이와 같아질 때까지 반복한 뒤 S와 T가 같은지 비교했다. 테스트 케이스는 통과했지만 제출 시 60%쯤에서 틀리게 된다. 이런저런 입력을 줘봤지만 어느 부분이 예외인지 찾지 못해서, sol2로 해결했다. 오히려 틀린다면 시간초과가 날 줄 알았는데 모르겠다,,

 

sol2

let [S,T] = require('fs').readFileSync('test.txt').toString().trim().split('\n');
function solution(S,T) {
  S = S.split('');
  T = T.split('');
  let sLen = S.length;
  let tLen = T.length;
  for(let i=tLen-1;i>=sLen;i--) {
    if(T[i] === "B") {
      T.pop();
      T.reverse();
    };
    if(T[i] === "A") T.pop();
  };
  return T.join('') === S.join('') ? 1 : 0;
};
console.log(solution(S,T));
//1

sol1 과는 역으로 T에 조건이 맞도록 줄여갔다. T배열을 뒤에서부터 돌며 A를 만나면 제거하고 B를 만나면 제거한 후 뒤집었다. 배열(Object)끼리 동일한지 비교가 안되기 때문에 다시 문자열로 바꿔서 비교해주었다.

 

저작자표시 비영리 변경금지 (새창열림)

'Study > Algorithm' 카테고리의 다른 글

[BEAKJOON / node.js] 1302 베스트셀러  (0) 2022.06.21
[BEAKJOON / node.js] 1744 수 묶기  (0) 2022.06.17
[BEAKJOON / node.js] 9935 문자열 폭발  (0) 2022.06.15
[programmers / JavaScript] JadenCase 문자열 만들기  (0) 2022.06.14
[BEAKJOON / node.js] 1920 수 찾기  (2) 2022.06.12
    'Study/Algorithm' 카테고리의 다른 글
    • [BEAKJOON / node.js] 1302 베스트셀러
    • [BEAKJOON / node.js] 1744 수 묶기
    • [BEAKJOON / node.js] 9935 문자열 폭발
    • [programmers / JavaScript] JadenCase 문자열 만들기
    Poylib
    Poylib
    모시깽 기록

    티스토리툴바