항해 99

[항해99 취업 리부트 코스 수강 후기] 자료구조/알고리즘1

jjuya 개발 기록 2024. 7. 22. 21:44

🔥2주 차 회고

3주동안 진행되는 자료구조 / 알고리즘 주차가 시작되었다. 

하루 4문제 풀기 머 어렵겠나 했는데 생각보다 빡빡했다

그래도 매일 하루 4문제씩은 꾸준히 풀다 보니 차곡차곡 쌓이고 있는 거 같긴 하다

 

강의 학습 내용

[1일 차] 

변수, 데이터 타입, 연산자

int, boolean, char, short, float, long, double, byte 8개의 기본 연산자를 제외한 모두를 참조형이라고 한다

연산자의 우선순위 - 대입연산자 < 삼항연산자 < 논리연산자 < 비교연산자 < 산술연산자 < 단항연산자

String의 관련메서드들도 학습했다.

기본 자바의 개념을 알고 있으면 문제는 크게 어려운 점은 없었다.

백준의 문제를 처음 접해서 첫날에는 런타임에러 때문에 고생했다.

 

[2일 차]

제어문, 배열, 입/출력

제어문 while, for, if..

배열, 다차원 배열 - 코테에서도 진짜 많이 사용하는 거 같았다!

프로그래머스만 풀다가 백준을 풀어보니 참 불친절한(?) 코딩테스트였다 

입출력도 직접 만들어야 했고, 입출력 또한 시간과 메모리 공간을 고려해서 문제에 따라 선택해서 풀 수 있었다.

특정한 합을 가지는 부분 연속 수열 찾기 문제가 나왔는데 투포인터를 사용해 푸는 문제였다.

알고리즘 투포인터에 대해서도 학습할 수 있었다.

 

[3일 차]

함수와 재귀

재귀 함수에 대해 학습을 했지만, 재귀로 풀이를 하니까 시간초과와 스택오버플로우가 났다

재귀는 함수를 한 번만 작성해도 되지만 깊이가 깊어질수록 스택오버플로우를 발생할 수 있었다. 해당 방법으로 문제를 푸는 건 비효율적이라는 것을 알게 되었다.

그래서 문제에서 나온 동적 계획법 알고리즘을 사용해 재귀를 대신해 문제를 풀 수 있었다.

 

[4일 차]

표준라이브러리

문제를 풀 때 자바에서 제공하는 표준 라이브러리를 통해 손쉽게 문제를 풀 수 있었다.

사실문제를 봤을 때 알고 있는 라이브러리들이 없어서 막힐 때도 많이 있었다.

직접 구현해서 풀어보는 것도 좋지만 적절한 상황에서 알맞은 라이브러리를 사용하면 더 효과적으로 문제를 풀 수 있을 거 같다!

이날도 문제가 간단해서 많은 문제를 풀어볼 수 있었다. 데이터의 키와 값을 저장해서 푸는 문제가 있었는데 HashMap을 미리 학습해 볼 수 있었다.

 

[5일 차]

자료구조 기초

데이터를 저장하고 관리하는 방법이다

효과적으로 저장, 검색, 수정할 수 있도록 구조화해서 데이터를 저장할 수 있다.

앞서 배운 배열과 배열의 단점을 해결해 줄 수 있는 연결리스트, 스택, 큐, 트리, 해시테이블 등이 있다

그리고 최악의 시간을 나타내는 빅오 표기법에 대해서도 학습할 수 있었다

문제를 풀면서 수학적 지식이 있으면 조금 더 도움이 되겠다 싶었다.

 

 

팀스터디

매일 팀 스터디를 통해 팀원들이 각자 작성한 코드를 보며 토론하는 시간을 가졌다.

모든 문제에 틀린 정답은 없기에 팀원들의 코드를 보며 내가 생각하지 못했던 부분을 새롭게 알 수 있어 생각의 확장과, 서로의 코드를 비교해 보며 어떤 코드가 더 클린코드에 가까울까 함께 이야기해볼 수 있어서 좋았다