오늘은 알고리즘 위주로 공부!
알고리즘 풀면서 어떻게 풀었는지 블로그에 적어두었다.
[프로그래머스] 햄버거 만들기
https://taeho-fighting.tistory.com/95
[프로그래머스] 성격 유형 검사
https://taeho-fighting.tistory.com/96
[프로그래머스] 바탕화면 정리
https://taeho-fighting.tistory.com/97
[프로그래머스] 개인정보 수집 유효기간
https://taeho-fighting.tistory.com/98
[프로그래머스] 달리기 경주
https://taeho-fighting.tistory.com/99
이번주차 알고리즘을 다 풀면서 어려웠던 것들과 새로 도입한 신기술들에 대해 적었다.(나한테만 신기술임)
본격적으로 시간복잡도를 신경써야 할 때가 왔다. 로직은 맞았는데 시간초과가 돼서 문제를 실패하는 경우가 두문제에 한개 꼴로 나온다. 대부분 반복문 안에 반복문이 들어가는 로직을 사용하면 시간 복잡도가 올라간다. 이를 해결하기 위해 적절한 자료구조를 사용하고, 시간복잡도에서 이득을 볼 수 있는 클래스들을 사용해야한다. 예전부터 소희님이 말했던 것은 String을 사용하면 느리다 -> StringBuilder로 String을 편집해서 나중에 String으로 변환하기를 요즘 맞으면서 배우고 있다.
또한 알고리즘 팀원인 민선님이 map은 사기 자료구조다. map을 이용하면 쌍으로 데이터를 갖는 자료구조를 반복문을 하나 없이 사용 할 수 있게 된다. 마찬가지로 stack, que등 적절한 자료구조들을 잘 기억하고 써먹자!
암 생각 없이 ArrayList를 쓸 때가 많은데 만약 List에 삽입, 수정, 삭제를 할 때는 ArrayList가 아닌, LinkedLIst를 쓰는 등 같은 자료구조 내에서도 더 좋은 자료구조를 선택하는 것이 중요하다는것을 깨달았다.