[팀스터디에서 얻은 인사이트]
입력 함수의 중요성에 대해서 체감할 수 있었다. 알고리즘을 풀다가 반복문 내에서 입력을 받게 되는 상황이 생겼는데, 그때 값이 1000이 넘어가는 경우, input() 함수를 쓰게 되면 시간이 매우 지연되게 된다. 단순히 이런 일을 위해 sys.stdin.readline을 가능하면 사용하는게 좋다 정도로만 인지하고 있었는데, 이 문제에 한해서는 시간 차이가 10배 이상 나 시간 초과로 문제 해결을 실패하고 있었다. 하지만 다른 분들이 쓰신 코드를 보면서 왜 써야하는지, 시간 차이가 구체적으로 얼마나 나는지 알 수 있어 많이 배운 것 같다.
멘토분께서 멘토링해주시면서 코드를 보면서 말씀하신 핵심 2가지는 하나는 쓸데없이 메모리를 낭비하지 않게 사용하지 않는 값에 대해서는 del 키워드를 통해서 지속적으로 삭제해주면서 공간복잡도를 고려하는 것과 코드를 작성할 때 애드혹 스러운 코드를 작성하지 말자고 하셨다. 애드혹은 범용적으로 사용가능한 해결법이 아니라 특정 상황에서만 적용가능한 해결법을 말한다. 나 또한 알고리즘 문제를 해결하는데 급급했지 유사한 문제들에 대해 범용적으로 적용 가능한 알고리즘인지에 대한 고민이 부족했던 것 같다.
요약
가능하면 입력함수는 input 보다는 sys.stdin.readline을 사용하자.
딕셔너리를 사용할 때 default 값이 필요하다면 collections의 defaultdict를 사용하면 생성시 초기값을 지정해준다.
알고리즘 문제를 풀 때는 ad-hoc스러운 코드를 작성하지 말고 범용성을 고려해야 한다.
항해99 취업 리부트 코스를 수강하고 작성한 콘텐츠입니다.
'항해99 > 2-4주차' 카테고리의 다른 글
[항해99 취업 리부트 코스 학습일지] Day 12 - 1차 코딩테스트 (0) | 2024.04.02 |
---|---|
[항해99 취업 리부트 코스 학습일지] Day 11 - 알고리즘 : 2차원 배열 (0) | 2024.04.01 |
[항해99 취업 리부트 코스 학습일지] Day 10 - 알고리즘 : 문자열 (0) | 2024.03.30 |
[항해99 취업 리부트 코스 학습일지] Day 9 - 알고리즘 : 백트래킹 (1) | 2024.03.29 |
[항해99 취업 리부트 코스 학습일지] Day7 - 알고리즘 시작 (0) | 2024.03.27 |