배열의 코테 적용방법

2023. 4. 9. 11:00·코딩테스트 준비/자료구조
반응형

반복문

완전탐색 - O(n)2

제약조건에 간당간당함

def twoSum(nums, target):
    n = len(nums) #n은 주어진 배열의 길이
    for i in range(n): # 0~n 까지 i ++
        for j in range(i+1,n): # i+1 ~ n까지 j++
						# i와 j에 해당하는 값들을 더해 target의 값이 나오면 True
            if nums[i] + nums[j]== target: 						
                return True
    return False # 아니라면 False가 된다.

print(twoSum(nums=[1,2,3,4,5],target=10))

Sort& Two Pointer

투 포인터의 기본적인 생각은 이렇다.

배열의 양 끝단에 포인터를 하나씩 설정한다.

만약 정렬된 두 수의 합이 크면 포인터를 왼쪽으로 한 칸

작다면 포인터를 오른쪽으로 한 칸 옮긴다.

맨 처음에 포인터가 놓여있는 위치는 양 끝단이므로, 합계가 크다면 오른쪽 끝에있는 포인터를 왼쪽으로

합계가 작다면 왼쪽 끝에있는 포인터를 오른쪽으로 옮기게 된다.

왼쪽에 있는 포인터가 오른쪽에 있는 포인터와 같을 수 없고, 또한 더 커질 수 없다. 두 수가 만나게 되면 주어진 조건에서 타겟을 찾을 수 없는 것이다.(False 를 리턴한다.)

Sort 는 nlogn의 시간복잡도를 가지고, Two Pointer로 두 수의 합계를 구하는 것은 n의 시간복잡도를 갖게 된다.

Sort와 두 수의 합계는 따로 존재하니까 (Sort안에 합계를 구하는 로직이 들어있거나, 그 반대이거나)

nlogn + n 의 시간복잡도인데,

큰 계수를 가진 것만 표현하도록 되어있으므로 최종적으로 nlogn의 시간복잡도가 된다.

def twoSum(nums,target):
	nums.sort()#수를 정렬한다.nlogn
	l,r = 0, len(nums)-1 #왼쪽 포인터와 오른쪽 포인터를 설정한다.
	while l<r: # l이 r 보다 커지면 False를 리턴
		if nums[l]+nums[r] == target: #합계가 같다면 True
			retrun True
		elif nums[l]+nums[r] < target: #작으면 왼쪽 포인터를 오른쪽으로 한 칸
			l += 1
		elif nums[l]+nums[r] > target: # 크면 오른쪽 포인터를 왼쪽으로 한 칸
			r -= 1
	retrun False


Uploaded by N2T

반응형

'코딩테스트 준비 > 자료구조' 카테고리의 다른 글

배열 Array  (1) 2023.04.09
동적 배열 Dynamic Array  (2) 2023.04.09
'코딩테스트 준비/자료구조' 카테고리의 다른 글
  • 배열 Array
  • 동적 배열 Dynamic Array
cvcvcx9
cvcvcx9
프로그래머
  • cvcvcx9
    참치와 연어가 좋아
    cvcvcx9
  • 전체
    오늘
    어제
    • 전체보기 (90)
      • JAVA (22)
        • 웹 프로그래밍 딥하게 파보기 (7)
        • String (2)
        • 자바의 다양한 객체 (3)
        • 클래스와 인터페이스, 추상클래스 (2)
        • 컬렉션과 자료구조 (6)
        • 제네릭 (0)
      • SPRING (3)
      • JPA 게시판 (19)
        • JPA게시판 만들기 (7)
        • JPA (10)
        • Spring Security (2)
        • 오류정리 (0)
      • 코딩테스트 준비 (4)
        • 자료구조 (3)
      • Python (21)
        • Django (21)
      • 컴퓨터 기초 (8)
        • 컴퓨팅사고 (7)
      • Web (7)
        • 유용한 설정 (6)
        • Git 관련 (1)
      • 데이터베이스 (1)
        • 친절한 SQL튜닝 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 인기 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.3
cvcvcx9
배열의 코테 적용방법
상단으로

티스토리툴바