[코딩테스트] 올바른 괄호

2022. 9. 28. 09:19·개발/알고리즘
728x90
반응형
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

1. 1번풀이

function solution(s) {
  var answer = true;
  s = s.split("");
  while (true) {
    const idx1 = s.indexOf("(");
    const idx2 = s.indexOf(")");

    if (idx2 < idx1 || idx1 == -1 || idx2 == -1) {
      answer = false;
      break;
    }

    s.splice(idx2, 1);
    s.splice(idx1, 1);

    if (s.join("") == "") {
      break;
    }
  }
  return answer;
}

효율성테스트에서 실패 splice가 문제라고 생각함 : 효율성 실패

 

2. 2번풀이

function solution(s) {
  var answer = true;
  while (true) {
    const idx1 = s.indexOf("(");
    const idx2 = s.indexOf(")");

    if (idx2 < idx1 || idx1 == -1 || idx2 == -1) {
      answer = false;
      break;
    }

    s = "".concat(s.slice(0, idx1), s.slice(idx1 + 1, idx2), s.slice(idx2 + 1));

    if (s == "") {
      break;
    }
  }
  return answer;
}

index로 접근할때 그 값이 없으면 처음부터 끝까지 검색하기 때문에 오래걸린다고 생각함 : 효율성 실패

3. 3번풀이

function solution(s) {
  var answer = true;
  while (true) {
    s = s.split("()").join("");

    if (s == "") break;

    if (s.charAt(0) == ")" || s.charAt(s.length - 1) == "(") {
      answer = false;
      break;
    }
  }
  return answer;
}

끝나는 조건이 부족하다고 생각함 : 효율성 실패

4. 4번풀이

function solution(s) {
  if(s.length%2) return false
  var answer = true;
  while (true) {
    s = s.split("()").join("");

    if (s == "") break;

    if (s.charAt(0) == ")" || s.charAt(s.length - 1) == "(") {
      answer = false;
      break;
    }
  }
  return answer;
}

()가 2개씩묶여있으니 2로 나눴을때 나머지가 있으면 false를 반환 : 효율성 2번통과 1번 실패

5. 5번풀이

function solution(s) {
  let count = 0;
  for (const value of s) {
    count += value == "(" ? 1 : -1;
    if (count < 0) return false;
  }

  return count == 0 ? true : false;
}

split과 join을 계속 하는거보다 s의 인덱스로 접근해서 쌓는게 더 빠른것 같다.

이문제 때문에 BigO표기법 공부를 시작했다..

728x90
반응형

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

[BigO] 객체와 배열  (1) 2022.09.29
[코딩테스트] 프로그래머스 문제 모음  (0) 2022.09.28
[BigO] BigO 표기법  (0) 2022.09.26
[코딩테스트] 최대공약수와 최소공배수  (1) 2022.09.20
[코딩테스트] 프로그래머스 문제 모음  (0) 2022.09.20
'개발/알고리즘' 카테고리의 다른 글
  • [BigO] 객체와 배열
  • [코딩테스트] 프로그래머스 문제 모음
  • [BigO] BigO 표기법
  • [코딩테스트] 최대공약수와 최소공배수
TeTedo.
TeTedo.
  • TeTedo.
    TeTedo 개발 일기
    TeTedo.
  • 전체
    오늘
    어제
    • 분류 전체보기 (319)
      • 개발 (274)
        • Article (4)
        • 정리 (21)
        • Spring Boot (17)
        • JPA (2)
        • JAVA (6)
        • Database (4)
        • 자료구조 (11)
        • 알고리즘 (32)
        • React (20)
        • Docker (10)
        • node.js (18)
        • Devops (11)
        • Linux (4)
        • TypeScript (3)
        • Go (10)
        • HyperLedger (4)
        • BlockChain (43)
        • html, css, js (48)
        • CS (3)
        • AWS (3)
      • 모아두고 나중에 쓰기 (3)
      • 팀프로젝트 (18)
        • SNS(키보드워리어) (9)
        • close_sea (9)
      • 개인프로젝트 (1)
        • Around Flavor (1)
        • CHAM (13)
        • ethFruitShop (5)
      • 독서 (0)
        • 스프링부트와 AWS로 혼자 구현하는 웹 서비스 (0)
  • 블로그 메뉴

    • 홈
    • 개발일기
    • CS
    • 실습
    • 코딩테스트
    • 웹
    • Go
    • node.js
    • 팀플
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    erc20
    node.js
    프로그래머스
    React
    node
    go언어
    html
    go
    30일챌린지
    명령어
    ERC721
    js
    CSS
    nodejs
    mysql
    도커
    컨테이너
    30일 챌린지
    하이퍼레저
    블록체인
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
TeTedo.
[코딩테스트] 올바른 괄호
상단으로

티스토리툴바