본문 바로가기

자료구조 알고리즘2

2 Pointer - 값들을 합해서 원하는 값이 되는 숫자들의 모음을 아는 방법 코딩테스트에서 3-Sum 문제유형이 나왔다. 처음 문제를 풀 때는 for 문을 마구 돌리며 i, j, k 를 다 돌며 합해서 0이 되는 값을 배열에 push해주는 경우를 생각했다. 하지만 집에 와서 다시 풀어보니 같은 숫자 ex) [[-1, 0, 1], [2, 0, -2], [-1, 0, 1]] 이렇게 같은 배열이 중복되는 경우와 0으로만 이루어진 배열에서도 따로 예외처리를 해줘야하는 등 더 복잡하고 for문을 많이 중첩해서 쓰니 O(n^3)의 시간복잡도가 나오는 방법이다. 풀면서도 이건 아니다싶었지만 생각이안나 일단 이 잘못된 방법으로 다시 풀어보았다. (안좋은 방법) 어찌저찌해서 test case는 다 통과되었지만 submit했을 때 55 / 312 testcases passed가 떴다. test c.. 2023. 8. 10.
Big O Notation 고등학교 때를 생각해보면 수학의 정석 1단원인 집합 부분은 모두 열심히 공부했다. 수학의 집합, 한국사의 선사시대가 있다면 자료구조에는 빅오가 있는걸까 ㅎ 제발 느리더라도 끝까지 가기를 바라면서 너무 열심히 쓰지는 말아야지. 빅오를 1줄로 요약해서 결론부터 생각해본다면, 어떤 것의 추세라고 요약하고싶다. 그리고 그 어떤 것에 대해 설명해보면 (어떤 것 -> 시간복잡도, 공간복잡도) 어떤 알고리즘이 효율적인가를 판단할 때, 크게 시간복잡도와 공간복잡도를 기준으로 판단하는데, 그것들이 얼만큼 효율적인가를 보기 쉽게 나타내주는 것이 빅오 표기법! 빅오 표기법을 처음 봤을 때 너무 간단해서 더 어렵게 느껴졌다. 첫인상: O(1) 👀 이게뭔데. 뭐이렇게 많이 요약되어있는데 그런데 요약!! 그게 빅오 표기법의 뽀인.. 2022. 10. 19.