Developer/알고리즘,자료구조 3

Multiple Pointers - countUniqueValues(고유값세기 - 다중포인터)

문제 Implement a function called countUniqueValues, which accepts a sorted array, and counts the unique values in the array. There can be negative numbers in the array, but it will always be sorted. 정렬이 되어있는 배열에서 고유의 값들의 갯수를 세는 함수를 실행하라. 배열에는 음수가 있을 수 있으나 항상 정렬이 되어있다. Examples: countUniqueValues([1,1,1,1,1,2]) // 2 countUniqueValues([1,2,3,4,4,4,7,7,12,12,13]) // 7 countUniqueValues([]) // 0 count..

Frequency Counter - validAnagram(빈도수 세기 - 애너그램)

문제 Given two strings, write a function to determine if the second string is an anagram of the first. An anagram is a word, phrase, or name formed by rearranging the letters of another, such as cinema, formed from iceman. 두 개의 문자열이 주어지고, 두번째 문자열이 첫번째 문자열의 애너그램인지 결정하는 함수를 만들어라. 애너그램은 iceman에서 만들어진 cinema처럼 문자을 재배열한 단어 혹은 구문입니다. Examples: validAnagram('', '') // true validAnagram('aaz', 'zza') // f..

빅오(Big O) 표기법이란?

빅오 표기법 시간복잡도 : 컴퓨터가 계산하는 횟수 공간복잡도 : 변수가 차지하는 공간 빅오표기법을 활용한 여러 알고리즘을 공부해야하는 이유 -> 목적 : 결과만 같으면 되는가? 아니, 같은 문제에 대해 1시간이 걸릴수도 있고 30분이 걸릴 수도 있다. 이 점에 집중한다. 빅오를 이해하면 비효율적인 코드를 찾는 데 도움이 된다. 좋은 코드는 빨라야하고, 메모리 사용이 적어야하고, 읽기 좋아야한다. 1. 속도는 (시간복잡성) -> 기기 사양에 따라 다를 수있다. 같은 머신이어도 다른 시간이 걸릴 수 있다. 코드 시간만 측정하는 건 좋지 않다. -> 컴퓨터가 해야하는 연산의 갯수가 중요하다? 2n 이든 5n+2든 정확한 숫자와는 사실 상관이 없다. 전체적인 추세가 중요하다. 2. 메모리 사용은? (공간복잡성)..