ASAC 빅데이터 분석가 7기/ASAC 일일 기록

ASAC 빅데이터 분석가 과정 60일차 (25.03.07)

junslee 2025. 3. 7. 10:24

세미나 - 알고리즘 특강

씨큐브 코딩

민코딩

 

코딩테스트

코테 알고리즘 종류

  • Dijkstra
  • Sliding Window / Two Point 등등

현업에서 중요한지?

현업에는 XX

Hash/String Parsing/Queue 정도만..

 

그럼 왜 하는지?

  • 기본기가 능숙한 지 테스트 
  • 코테 문제를 잘 푼다 = 디버깅이 빠르다!

현업과 코테 알고리즘

코테 잘하는 사람이 현업에 능숙할 가능성 높음

코딩테스트 회사

1. 포털

2. 제조

3. 금융

4. SI

5. 정보보안

6. 게임

 

코딩테스트의 알고리즘

  • 영상처리
  • 메모리 관리
  • 프로세스 관리
  • 언어인식
  • 사물인식
  • 데이터관리

P.S

알고리즘 실력을 빠르게 올리기 위해

종만북?

- 프로그래밍 대회에서 배우는 알고리즘 문제 해결 정략

-> 대회 나가는 수준까지 도달한 사람

 

중수 이상이 될 때

아닐때

 

능숙함의 차이

  • 여러 알고리즘이 섞여 있는 응용 문제

data처리 -> 분석

--- 이미 알고 있으니까 그냥 알고 있는 거에서 쉽게 select

=> 내가 확인해서 검증할 단계가 엉청 줄어듦

그냥 모델 같은 거 선정만 하지 그 선정해서 세팅 어떻게 할 지 토의같은 거 안하죠?

 

전처리 -> 모델 -> 시각화 -> 분석 

 

문제 풀다 막히면?

'건들지 못하겠다'

'무엇을 요구하는지도 모르겠다'

-> 답을 보지 말고 쉬운 문제 먼저 하자

목표로 해야하는 수준

  • 같은 문제를 풀 때 소모하는 에너지
    고인물 - 능숙함 - 이해함 - 모름

쉬운 문제 vs 어려운 문제

  • 중수 이상 아니면 쉬운 문제를 더 우선적으로 많이 풀어야 한다.
  • 기출은 시험에 다가올 때 

(참고)

알고리즘 문제에선 어떤 경우도 있는가?

-> 이런 유형의 문제를 니가 안풀어봤으면 넌 틀리는거야?

[추천 공부 방법] Daily 과제

  • 매일 쉬운 문제 두 문제 씩
  • 좋은 컨디션 - 많이 풀자

(참고)

ssafy

1달동안 수업에서 풀었던 문제

=> 400문제 가량 => 1달 쉬면 다 까먹음

프로그래밍 언어 무엇이 좋을까?

  • ps쪽에선 제일 좋은 언어 
    => C or C++ => 얘네가 제일 빠르다.
  • 애초에 대회에선 C,C++을 중심으로 문제를 출제
    대회 같은 경우는 C,C++이 표준이라서
    C,C++ 위주로 문제가 다 출제
    => 실제 기업 코테도 결국 대회를 base로 문제를 출제 => C,C++
  • 하지만 C,C++이 중요하기보단 어떤 언어라도 결국 코드를 잘 작성하느냐! <- 기업에서 묻는 것
    => 언어는 상관이 없다.

코딩실력이 괜찮으면 무엇이든 괜찮다

  • Python도 괜찮음

알고리즘 스터디

  • 사람 운이 좋아야합니다
    => 혼자 하는 것을 추천

2화

코테를 왜 보나요?

  1. 코딩기본기 / 문제 해결력
    못하면 정말 답답함
  2. 타 Spec 대비
    인적성 보다 유용
    토익 보다 유용
    해커톤, 공모전 입상 보다는 유용

(참고)

삼성계열 => 코테에 등급 Adv -> Pro -> Expert

Adv - 기업 코테 합격

Pro - 대우가 좋음 

Expert - 논외(너무 높은 등급) 

=> 삼성계열사 중 1명도 없는 계열사도 많다

 

기업별 코딩테스트 특징

 

네이버 < 카카오 < 삼성

엘지, 하이닉스

 

(참고)

카카오 4번까지 풀어보면 된다.

코테에서 파악할 수 있는 것

  1. 구현력은 얼마나 갖췄는가?
  2. 기본적인 알고리즘은 사용할 줄 아는가?
  3. 컴퓨팅 사고력으로 문제를 접근하여 시간에 대한 효율을 높일 수 있는가?
  4. 특이한 상황(저격 케이스)에 대한 것도 고려하여 작성하는가?
  5. 위 사항들에 대한 응용력은 어느정도인가?

컴퓨팅 사고력 문제

문제의 요구사항을 토대로 다른 접근 방식으로 효율을 높일 방법을 찾아야함

  • bit 연산을 토대로 연산
  • 구간 데이터 처리
  • 전처리기반 query

(참고)

이런 유형의 문제를 안풀어봤으면 그냥 틀리는 유형

이미 내가 어떻게 풀어야 하는지 알고 갔어야 풀 수 있는 문제 유형 <- well known

그래프 문제

  • 비선형 data에 대한 처리 문제
    완전 탐색 기반 문제

컴퓨팅 사고력 문제

특이한 상황 및 응용력 문제 

 

공부해야 할 알고리즘

  • 구현
  • 시뮬레이션
  • Greedy
  • DFS
  • Backtracking
  • BFS
    (그 다음)
  • 이분 탐색
  • Dijkstra
  • Dynamic Programming
  • stack
  • MST
  • Bitmasking

(참고)

Greedy - 최선을 선택해 나가는 방식

 

추천 사이트

  1. 백준  (단계별로 풀어보기 level 38까지)
  2. 정올 (advanced)  //백준과 둘 중 선택
  3. 프로그래머스 (level3까지)
  4. 해커랭크(HackerRank) - 출제 사이트

3화. 실전 코딩테스트 : 디버깅과 복잡도

(참고)

면접은 하나라도 책 잡히지 않는 것이 중요

평가 항목

  1. 다른 사람과 협업이 잘 될 것인가? 1~10
    1~3 : 이 사람은 합격시키면 안된다.
    4~6 : 보통
    7~10 : 우수
    => 프로젝트와 연관지어 말하기 좋음
  2. 기술 이해도 : 프로젝트 뿐만 아니라 평소에도 얼마나 이쪽에 관심이 있는가?
    => 기술적 이해도가 높은가?
    => 관심도가 어느정도 있는가?
    최신 트렌드 => 어떤 기업에서 어떤 기술이 나왔다더라
    ex) deepseek 가 openai와 무슨 차이점이 있는지

(참고)

ssafy

적극성, 친화력

=> 보통 합격했던 친구

 

코드 작성이나 기술적으로 뛰어났던 친구 

=> 좀 고생해서 합격한 친구

 

(참고)

기본은 전부 갖춰야 한다

<= 프로젝트

<= 최신 트렌드 파악
-- 관심이 있는 기업이 있으면 그 기업이 요즘 뭘 개발하고 뭘 추구하는지

ex) 삼성전자 => 삼성워치 => OS 타이젠 

 

면접을 가려면 일단 코테는 패스해야 한다. <- 암울한 현실..

=> ssafy 같은 경우 팀프로젝트만 반년간 4번정도

반년 : 이론 공부

반년 : project만 4번

 

1.pycharm

2.visual studio code

python bebugger

python

pylance

Trace 연습

  • Trace 연습은 단축키 활용부터

시간/ 공간 복잡도

코드가 돌아가는 시간 : 계산량이 많을 수록 올라감

=> 반복 횟수

=> 일반적으로 입력된 data의 양

=> data의 양에 따라 반복되는 횟수를 확인했을 때, 약 1억번 반복당 1초정도 걸린다

 

P.S에서 자주 사용하는 시간 복잡도

  • O(1)
  • O(n)
  • O(n^2)

(참고)

입력 data의 개수 : N (1~100만)

=> O(logN), O(N), O(NlogN) 까지 사용이 가능하다.

=> 그정도 알고리즘까지만 내가 고려하면 된다.

=> N 사이즈가 엉청 작다 : 애초에 크게 문제를 낼 수 없어서 어쩔 수 없이 작게 만들었다.

 

=> 시간이 엉청 오래 걸릴만한 알고리즘 N! =>

 

P.S에서 복잡도 계산을 해야하는 이유

어떤 알고리즘 문제인지 파악

 

시간 복잡도

공간 복잡도

- 메모리 사용

 

(참고)

웬만한 문제에선 배열 크기로 문제가 되는 일이 거의 없음

딱 정해드리면 보통 1000만정도 까지 사용 가능

=> 그런데 혹시 이거 최대한 효율적으로 쓰는게 좋은가요? NO! 정해진 크기 내에서만 작성하면 ok


5화. 테스트

구현연습_1_3선 빙고

구현연습_1_Draw Tool

구현연습_1_오