데이터구조와 알고리즘 4

백준 2884 - 다른 사람 코드 보기

https://www.acmicpc.net/problem/2884 2884번: 알람 시계 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만, www.acmicpc.net 문제 요약 시간/분 입력 시 45분을 뺀 결과를 나타내는 문제 내가 푼 방법 - 시간(H), 분(M) 각각 계산하기 분(M)이 45분 미만일 때 단순 뺄셈으로는 되지 않는다는 점을 바탕으로 로직 작성 import Foundation let line = readLine()! let lineArr = line.components(separatedBy: " ") var h = Int(lineArr[0])! va..

빅오 표기법 존재의 이유

이 소프트웨어의 규모가 커질까? 규모가 커질거라 예상이 된다면 확장성을 미리 갖춰야 한다는 뜻일것이다. 여기서 확장성(Scalability)이란, 아키텍처 입장에서는 앱을 쉽게 변경할 수 있음을 의미하고, 데이터베이스에서는 데이터를 저장하거나 검색하는데 걸리는 시간을 의미한다. 데이터의 양에 따라서 같은 알고리즘이라도 실행 시간과 메모리 사용량이 다르게 나타나는데 이것을 수량화 하는 기술이 Big O 표기법이다. 실행 시간과 메모리 사용은 각각 시간 복잡도와 공간 복잡도로 나타낼 수 있다. 시간과 공간 복잡도는 확장성 측정의 상위 척도이다. 복잡성의 형태를 나타내는 방법으로 빅오 표기법을 사용하는 것이지 실제 속도나 메모리 사용량을 측정하는 것이 아니다. 시간 복잡도(Time complexity) 데이터..

데이터 구조와 알고리즘을 왜 배워야 할까?

머릿말에서는 배우지 않아도 크게 손해볼 것 같지 않은 느낌이었지만 이번 장에서는 배우지 않으면 매우 손해볼 것 같은 느낌을 주고있다^^ 1. 우선 면접때 꼭 한 두개씩의 알고리즘 질문이 있다는 것. 2. 올바른 알고리즘과 적절한 데이터 구조를 선택함으로써 더 나은 성능을 발휘할 수 있다는 것. 3. 알고리즘이 사용하는 전략을 알면 코드 개선 아이디어를 얻을 수 있어서 자기 계발에 도움이 될 것. 음악가가 음계를 연습하는 것과 유사하며 기초가 단단할수록 더 복잡한 소프트웨어를 다루는데 능숙해진다는 것. 책에 나온 문제를 스스로 충분히 고민한 후 솔루션을 확인할 것을 권장하고 있다. 책은 크게 다섯개의 섹션으로 구성되어 있단다. 1. 소개 2. 기본 데이터 구조 3. 트리 4. 정렬 5. 그래프 모두 이해하..

데이터 구조와 알고리즘을 꼭 배워야할까?

소프트웨어 개발자라면 데이터 구조와 알고리즘은 배워야 한다고 막연히 생각하고 있었다. Swift를 메인 언어로 삼는 나로써 raywenderlich의 data structures & algorithms 전자책을 보기로 했다. 책의 저자가 머리말에 이런 이야기를 한다. 아이폰 개발자로서 알고리즘과 데이터 구조를 배워야 하냐고 묻는다면 '아니오'라고 대답할 것이다. 프로그래밍 요구사항 95%는 이런 지식없이 해결할 수 있다. 하지만 무차별적 대입식 솔루션이 통하지 않을 때가 있다. 나는 그 격차를 메우고 싶었다. 다른 사람들에 의해 여러번 해결된 적 있는 이 문제가 어떤 종류의 문제이고 그 솔루션이 무엇인지 이해하기 위해서는 배움이 필요하다. 공부에 앞서 책을 하나하나 씹어먹어야 한다는 부담감이 컸는데 이런..