[알고리즘] 다중 포인터

2022. 11. 2. 10:09·개발/알고리즘
728x90
반응형

문제

배열에 연속한 둘을 더해 0이 되는값이 있다면 그 두값을 return하는 함수를 만든다.

배열의 요소들은 오름차순으로 정렬되어있다.

예시

sumZero([-4, -3, -2, -1, 0, 1, 2, 5]);

 

풀이

(1) 1번풀이

function sumZero(arr) {
  for (let i = 0; i < arr.length; i++) {
    for (let j = i + 1; j < arr.length; j++) {
      if (arr[i] + arr[j] === 0) {
        return [arr[i], arr[j]];
      }
    }
  }
}

2중 for문을 돌려 시간복잡도가 O(n^2)이다.

 

(2) 2번풀이

function sumZero(arr) {
  let left = 0;
  let right = arr.length - 1;
  while (left < right) {
    let sum = arr[left] + arr[right];
    if (sum === 0) {
      return [arr[left], arr[right]];
    } else if (sum > 0) {
      right--;
    } else {
      left++;
    }
  }
}

반복문을 한번만 돌려 시간복잡도 O(n)

포인터 두개를 이용해서 풀이

 

728x90
반응형

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

[알고리즘] 연속된 수를 더해서 가장 큰 값 찾기  (1) 2022.11.02
[알고리즘] 배열에 중복되지 않는 요소 개수 찾기  (0) 2022.11.02
[알고리즘] anagram  (0) 2022.11.02
[알고리즘] 배열 안의 요소 비교  (1) 2022.11.02
[알고리즘] 알고리즘 문제 풀이 순서  (0) 2022.11.02
'개발/알고리즘' 카테고리의 다른 글
  • [알고리즘] 연속된 수를 더해서 가장 큰 값 찾기
  • [알고리즘] 배열에 중복되지 않는 요소 개수 찾기
  • [알고리즘] anagram
  • [알고리즘] 배열 안의 요소 비교
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
    • 팀플
  • 링크

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
TeTedo.
[알고리즘] 다중 포인터
상단으로

티스토리툴바