본문 바로가기

공부/TIL

23.12.19

오늘은 알고리즘 위주로 공부!

알고리즘 풀면서 어떻게 풀었는지 블로그에 적어두었다.

 

[프로그래머스] 햄버거 만들기

https://taeho-fighting.tistory.com/95

 

[프로그래머스] 햄버거 만들기

첫번째 풀이가 시간초과가 났다. 원인은 반복문 안의 indexOf()는 시간복잡도가 높음! stack 자료구조를 사용해봄. 이 자료구조는 First In Last Out 마지막에 들어온게 가장 먼저 나가는 식. 이 자료구조

taeho-fighting.tistory.com

[프로그래머스] 성격 유형 검사

https://taeho-fighting.tistory.com/96

 

[프로그래머스] 성격 유형 검사하기

사기 자료구조 map을 썼다. key값으로 mbti의 요소를 넣고, value값으로 해당 요소의 점수를 넣어주는 식. 점수를 4점을 기준으로 빼준다. 이때 음수값이라면 map에 해당 지문의 왼쪽 mbti 요소로 넣어

taeho-fighting.tistory.com

 

[프로그래머스] 바탕화면 정리

https://taeho-fighting.tistory.com/97

 

[프로그래머스] 바탕화면 정리

처음 이해하는게 살짝 어려웠지 실제 풀이는 뚝딱 했다. 핵심은 드래그를 할 때 위에, 왼쪽은 그냥 값을 구해주면 되지만? 오른쪽, 아래는 +1을 붙여줘야함. 왜냐하면 좌표계에서 +1을 해줘야 그

taeho-fighting.tistory.com

 

[프로그래머스] 개인정보 수집 유효기간

https://taeho-fighting.tistory.com/98

 

[프로그래머스] 개인정보 수집 유효기간

아 이거 좀 최적화를 진짜 못시킨 느낌... 첫번째로 각 약관(ABC...)들의 유효기간을 map에 담았다. key는 약관(ABC..) value는 유효기간. 여기서 애먹었던 첫번째 String.split(".") 이게 안먹는다. 정규표현

taeho-fighting.tistory.com

 

[프로그래머스] 달리기 경주

https://taeho-fighting.tistory.com/99

 

[프로그래머스] 달리기 경주

내가 좋아하는거 두개 다 있넹 ㅎㅎ 달리기와 경주(장군 암소 숯불 영원해..) 사기 map을 써서 풀어야지~ 하고 풀었다가 냅다 시간초과가 떴다. 이유를 생각해보면 players의 길이와 callings의 길이가

taeho-fighting.tistory.com

이번주차 알고리즘을 다 풀면서 어려웠던 것들과 새로 도입한 신기술들에 대해 적었다.(나한테만 신기술임)

본격적으로 시간복잡도를 신경써야 할 때가 왔다. 로직은 맞았는데 시간초과가 돼서 문제를 실패하는 경우가 두문제에 한개 꼴로 나온다. 대부분 반복문 안에 반복문이 들어가는 로직을 사용하면 시간 복잡도가 올라간다. 이를 해결하기 위해 적절한 자료구조를 사용하고, 시간복잡도에서 이득을 볼 수 있는 클래스들을 사용해야한다. 예전부터 소희님이 말했던 것은 String을 사용하면 느리다 -> StringBuilder로 String을 편집해서 나중에 String으로 변환하기를 요즘 맞으면서 배우고 있다.

또한 알고리즘 팀원인 민선님이 map은 사기 자료구조다. map을 이용하면 쌍으로 데이터를 갖는 자료구조를 반복문을 하나 없이 사용 할 수 있게 된다. 마찬가지로 stack, que등 적절한 자료구조들을 잘 기억하고 써먹자!

암 생각 없이 ArrayList를 쓸 때가 많은데 만약 List에 삽입, 수정, 삭제를 할 때는 ArrayList가 아닌, LinkedLIst를 쓰는 등 같은 자료구조 내에서도 더 좋은 자료구조를 선택하는 것이 중요하다는것을 깨달았다.

'공부 > TIL' 카테고리의 다른 글

23.12.21  (0) 2023.12.22
23.12.20  (1) 2023.12.21
23.12.18  (0) 2023.12.18
23.12.15  (0) 2023.12.15
23.12.14  (0) 2023.12.14