본문 바로가기
TechStudy/CodingTest

코테 준비 및 시간 복잡도, 빈출 문법

이 글은 골든래빗 <코딩 테스트 합격자되기 파이썬편>의 4장까지 써머리입니다.

 

1. 언어 선택: 잘하는 언어 선택. 파이썬이 제일 무난.

 

2. 문제 분석: 무작정 코드 작성보다 문제 분석에도 시간을 충분히 사용해야 함

- 문제 쪼개서 분석 (동작 단위로)

- 제약 사항 파악 및 테스트 케이스 추가 연습 좋음

- 입력값 분석(시간복잡도)

- 데이터 흐름 및 구성파악(ex>삽입 삭제 빈번시 heap 자료구조 고려)

- 핵심 키워드 파악 (표 참조)

 

3. 의사코드(Pseudo Code) 설계: 논리 설명 및 알고리즘 표현을 위한 지침

- 프로그래밍 언어 작성 아님. 자연어. 형식 없음. -> 추상 단계에서 설계 아이디어 좀 더 집중하여 추후 실수 방지.

- 동작 중심으로 작성.(세부구현 아님!)

- 문제해결 순서대로 작성(실제 코드의 주석이 됨)

- 구현 전, 테스트케이스 통과여부 검증

 

 

4. 시간복잡도 (Time Complexity): 알고리즘 성능 예측 및 적절 알고리즘 선택 및 설계 可

시간복잡도는 절대 시간이 아니다. (실제 걸리는 시간을 의미하지 않음)

시간복잡도는 최종 값이 도출되기까지의 연산 횟수 추이를 N으로 일반화, 점근적으로 표기한 것(빅오표기법)

그냥 최고차항만 남기면 된다. (지수함수는 우선순위)

계산법: 문제 정의 -> 연산 횟수 측정 -> 시간 복잡도 도출

 

 


 

[책 이외의 내용]

언어 선택은 파이썬이 무난하지만 지원 직종에 따라서 언어가 제한되어있는 경우도 있다.

따라서 본인이 지원하는 업무가 프론트면 JS, 백엔드면 Java, IOS면 Swift 등 이에 대한 대비를 하는게 좋다.

 

 

 

 

[스터디 및 도서 인증]

화요일 이후 책이 와서 사진 인증

 

스터디는 코딩테스트를 많이 앞두고 있어서 열심히 할 수밖에 없는 상황이다.

 

 

 

 


[빈출 문법] (내가 잘 잊는 부분 위주)

 

list_name[인덱스] = new정보    ->  list의 해당 인덱스 내용을 'new정보'로 변환

del list_name[인덱스]    ->  list의 해당 인덱스 내용 삭제

 

음수 인덱싱: 양수는 왼쪽에서 0부터 시작하지만 음수는 제일 오른쪽에서 -1 -2 -3.. 이렇게 됨. 

길이가 5인 리스트에 대해서 0, 1, 2, 3, 4는  -5, -4, -3, -2, -1 로 동일함

 

 

 

del list_name[키값]  -> 특정 dict값 삭제

 

[책 외 내용 추가]  리스트 값을 인덱스만들어서 dict만들기

from collections import defaultdict

dict = defaultdict(list)
for i, value in enumerate(key_num):  # key_num에 대해 index(i)와 value로 나열
    dict[value].append(i)

 

 

string_name.replacae("대상문자", "바꿀문자")  -> 해당 문자열 일괄변경. 바꿀문자를 ""로 입력시 일괄삭제

 

 

 

코딩테스트 구현시 Early retrun(조기반환)은 연산 효율성, 가독성, 예외처리를 위해 중요하다.

 

 

728x90
반응형

'TechStudy > CodingTest' 카테고리의 다른 글

chp8 해시(hash)  (1) 2023.12.13
chp6 스택(Stack), chp7 큐(Queue)  (4) 2023.12.07
백준 1차원 배열 10문제, 2차원 배열 단계 4문제 풀이  (1) 2023.11.30
chp5 배열(Array)  (1) 2023.11.28
코딩테스트 공부 1  (0) 2023.10.19