스스로의 부족함에 신물이 나는 1주일..!!
항해99에서 정해준 백준의 알고리즘 문제를 풀면서 알고리즘 강의를 보니 진도가 너무 느리게 나갔다.
아직 강의를 다 보진 않았는데 이번주 키워드가..
"시간복잡도, 공간복잡도, 점근표기법 및 이번주에 배운 알고리즘 내용"
다행이다. 이거 초반에 나온거다! 와!
시간복잡도와 공간복잡도는 둘 다 입력값에 대해 코드를 돌릴때의 시간,공간과 입력값 사이의 상관관계를 말한다..
이렇게 적으니까 솔직히 뭔 소린지 모르겠고, 쉽게쉽게 생각 하자면
배열의 길이가 N이고 for문같은 반복문을 통해 배열 길이만큼 어떤 행동을 실행시킬때,
배열의 길이가 길어지면 이 반복문을 끝내기까지의 시간이 늘어나는것!
그럼 반복문 안에 반복문이 있고 같은 배열을 쓴다면? N제곱만큼 시간이..늘어나는것..!!
그럼 반복문같은거 말구, 일반적인 연산은? 한줄당 +1이라고 생각하면 된다!
시간복잡도를 몰랐을때도 반복문 쓰면 시간이 오래 걸린다고 생각했지만 이렇게 계산을 할 수 있게되니 반복문을 최소화하는게 좋겠구나..! 싶어진다.
공간복잡도는 좀 더 쉽게 생각할 수 있다. 그냥 저장된 데이터의 수!
예를 들어 a = [1,2,3] 이렇게 해놓으면 데이터는 3개가 저장된것. 배열을 1개로 치는게 아니라 배열 안의 내용물 수가 데이터의 수!
둘 다 적으면 적을수록 좋은거지만 시간복잡도가 짧은 쪽이 더 좋다. 공간은 드러나보이진 않지만 시간은 체감이 되기도 하고
데이터 저장을 줄이겠다고 반복문을 중복으로 써서 N제곱만큼 시간이 걸리는 것보다 반복문을 줄이고 데이터를 더 저장시키는게 좋다.
막말로 배열안에 10000000개가 있는데 이거 반복문을 중복으로 돌리면 어떻게 될까? 엘쥐그램같은건 아주 후끈해질지두.
그러니 시간을 줄이는거에 초점을 맞추는 쪽이..좋다!
여튼 이 시간복잡도랑 공간복잡도를 생각해서 아 시간이 N제곱만큼 걸리겠구나~ 이러는걸 뭐라고 할까.
점근표기법이라고 한다. 물론 점근표기법 == 위의 방식 이게 아니라, 위의 방식이 점근표기법에 포함되는거다!
점근표기법에는 빅오, 빅오메가 표기법이라는게 있는데 둘 다 연산량을 따지는 표기법으로 빅오는 최악일때의 연산량, 빅오메가는 최적일때의 연산량을 말한다. 표기는 O(N), Ω(1) !
키워드에 대한건 이정도까지..하고, 그 외에 링크드 리스트, 이진탐색..재귀함수..정렬스택큐.. 뭔가 처음보던것도 있고 어째 익숙한것도 봤다.
그리고 이틀에 한번 튜터님이 프로그래머스에서 정해주신 문제를 풀어야했는데, 총 2개의 문제중 통과한건..두번째것.
https://programmers.co.kr/learn/courses/30/lessons/17683
코딩테스트 연습 - [3차] 방금그곡
방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV,
programmers.co.kr
https://programmers.co.kr/learn/courses/30/lessons/64061
코딩테스트 연습 - 크레인 인형뽑기 게임
[[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4
programmers.co.kr
처음 프로그래머스에서 풀어본 "방금그곡"이라는 문제, 묘하게 쉬워보이는 모습에 일단 돌진했..
...연속된 실패에 온갖 예외처리를 들이넣었지만 결국 76.7의 정확성으로 끝난..
알고보니 #으로 구분된 음은 다른걸로 바꿔서 사용하는게..좋았다고...
난 그런 생각도 못하고 내가 떠올린 모든 예외를 if문으로 처리했었다. 그러니 내가 생각 못한 예외는 처리 못하지! 따흐흑
그나마 위안되는 점은 이거 문제 풀은 사람도 그리 많지 않았다는것..
보니까 크루원들중 별명이 교수님이신분들이 풀으셨길래 코드 염탐좀 했었다 ㅋㅋ
첫 문제가 많이 어려웠다는걸 느끼신건지 튜터님이 뽑으신 두번째 문제 "크레인 인형뽑기 게임"은 좀 쉬웠다! 아침 9시부터 12시까지 푸는건데 문제풀고 다시 꿀잠타임 가졌었다 ㅋㅋ
내가 풀은 방식은 입력된 데이터를 토대로 세로 기준으로 된 새로운 데이터로 이루어진 배열을 만들고
거기에서 반복문을 돌렸다. 총 3개의 반복문을 돌려서..문제를 풀긴 했는데 해답을 보니 세로기준 배열을 만들지 않으면 2개의 반복문으로 풀 수 있었다. 아~~
아직 백준에서는 많은 문제를 풀지 못했다. 백준에서 문제 푸는 시간이 너무 오래 걸려서 중간부터는 일단 강의부터 봐야겠다 싶어서 강의를 보다가 그래도 문제 하나쯤은 더 풀어야지~ 이러면서 풀고..시간 날라가고.. 이야...
다음주에는 이전에 했던 프로젝트들을 개선하는 작업을 해야한다. 원래 이번주부터 짬날때마다 할 계획이었는데 옙 알고리즘 너무 얕봐서 지송합니다!!!!!!!! ㅠㅠㅠㅠㅠㅠ
그래서 이거 다 끝나고나서도 짬 나면..꼭 알고리즘 공부 추가로 하고싶다.. 아쉬움 한가득.
그럼 20000.
'Sparta Coding Club > 항해 99 3기 회고' 카테고리의 다른 글
항해99 마지막 회고..! (2) | 2021.12.27 |
---|---|
14주차 회고..! (0) | 2021.12.19 |
12주차회고, 실전프로젝트가 드디어.. (2) | 2021.12.06 |
11주차 회고 (0) | 2021.11.28 |
10주차 회고 (0) | 2021.11.21 |