SlideShare a Scribd company logo
코딩테스트 합격자 되기 C++
00~ 01장
저자 박경록
목차
코딩 테스트를 효율적으로 준비하는 방법
- 타인의 풀이를 보는 공부 법
- 아는것과 모르는 것을 명확히 하는 법
- 테스트 케이스를 고려하는 법
- 의사코드 설계하는 법
타인의 풀이를 보는 공부 법(고민)
- 시간이 많다면 충분히 문제에 대해 혼자 고민해보는 것이 좋음
But…. “대부분 수험생들은 시간이 부족함”
타인의 풀이를 보는 공부 법(방법)
1. 최소한 30분 ~ 1시간 정도 고민한다.
2. 그래도 답이 나오지 않을 경우, 답안코드를 본다.
=> 답안 코드에서 본인이 해결하지 못한 부분을 해결한 코드를 정리
=> 답안 코드에서 사용한 알고리즘과 매칭되는 부분을 문제에서 분석
=> 2주 정도 후에 다시 구현
타인의 풀이를 보는 공부 법(예시 - 문제)
입력:
nums = [2, 7, 11, 15],
target = 9
출력: [0, 1]
설명: nums[0] + nums[1] = 2 + 7 = 9 이므로 정답은 [0, 1]입니다
제한 :
입력 크기는 최대 100만 이고 제한시간은 1초 입니다.
타인의 풀이를 보는 공부 법(예시 - 내 코드 vs 정답 코드)
해결하지 못한 코드
정답 코드
①
②
타인의 풀이를 보는 공부 법(정리)
문제 입력값이 100만 인데, O(N^2) 알고리즘으로 접근해서 TLE 발생
- 정답 코드는 unordered_map을 활용해서 O(N)으로 개선함
=> 각 숫자를 unordered_map의 키로 활용
깨달은 점
- 다음 부터는 입력값을 꼭 확인해서 문제에서 요구하는 시간복잡도를 충족 시키자!
- 자료구조에 의해서도 시간 복잡도가 영향을 받을 수 있음(자료구조에 맞게 구현하므로)
아는것과 모르는것을 명확히 하는 법(방법)
- 아는 것만 공부하면 얻는 것은 자신감 뿐… 7:3을 지키자.
- 단순 기록 대신 나만의 용어로 정리
7:3을 지키자
- 기존 지식을 활용한 문제 풀이
- 기존에 틀렸던 부분 복습
- 새로운 개념 학습 및 문제 풀이
- 기존에 많이 틀렸던 알고리즘 문제 풀이
- 해결하지 못한 부분은 명확히 정리
알고있는 부분(30%) 모르는 부분(70%)
단순기록 대신 나만의 용어로 정리하자(방법)
- 나열식 정리는 타자연습과 다를바가 없습니다.(머리에 남지 않음)
- 개념을 머릿속에서 끝까지 이해한 후에, 완성된 문장으로 정리 합니다.
=> ??? ….. 이런걸 포함한다면 정리하는 의미가 없습니다.
단순기록 대신 나만의 용어로 정리하자(예시)
정렬
사용자가 정의한 기준대로, 데이
터를 나열하는 것
=> 이진탐색 사용 가능
시간 복잡도
비교정렬 : O(NlogN)
비-비교 정렬 : O(N)까지 가능
예시 코드
//something
나만의 언어로 변환
테스트 케이스 설계 하는 법(방법)
- 기본 케이스
- 경계값
- 에지 케이스
테스트 케이스 설계 하는 법(기본 케이스)
- 문제에서 설명한 “기본 동작”이 제대로 동작하는지 확인하는 케이스
문제: 두 정수를 입력받아 합을 반환하라.
입력: a=2,b=3
기대 출력:
5
테스트 케이스: assert sum(2, 3) == 5
문제: 주어진 문자열을 뒤집어 반환하라.
입력: "hello"
기대 출력: "olleh"
테스트 케이스: assert reverse("hello")
== "olleh"
테스트 케이스 설계 하는 법(경계 값)
- 입력값의 양 끝값을 테스트 함
문제: 주어진 양의 정수의 제곱근을 반환하라.
정수 부분만 반환한다.
입력 범위: 1에서 10^6 까지
최소값 입력: 1
테스트: assert sqrt(1) == 1
최대값 입력: 10^7
테스트: assert sqrt(10^6) == 1000
문제: 정수 배열과 타겟 정수가 주어졌을 때, 타겟의 인덱스를 반환
하라. 없으면 -1을 반환.
입력: 배열 [2,3,5,7,11], 타겟 3
경계값 테스트 케이스:
배열의 첫 요소: 2
테스트: assert find_index([2, 3, 5, 7, 11], 2) == 0
배열의 마지막 요소: 11
테스트: assert find_index([2, 3, 5, 7, 11], 11) == 4
테스트 케이스 설계 하는 법(에지 케이스)
- 예상치 못한 입력값이나 특수한 조건
문제: 주어진 정수가 소수인지 아닌지를 판별하라.
에지 케이스:
음수 입력:
테스트: assert is_prime(-1) == False
입력: 0
0은 소수가 아닙니다.
테스트: assert is_prime(0) == False
입력: 1
1은 소수가 아닙니다.
테스트: assert is_prime(1) == False
문제: 주어진 정수가 소수인지 아닌지를 판별하라.
에지 케이스:
음수 입력: 소수의 정의는 양의 정수에만 적용됩니다.
테스트: assert is_prime(-1) == False
입력: 0
0은 소수가 아닙니다.
테스트: assert is_prime(0) == False
입력: 1
1은 소수가 아닙니다.
테스트: assert is_prime(1) == False
의사코드 작성하기
의사코드 -> 구현 전, 비 프로그래밍 언어로 동작을 나열하는 것
장점
- 구현 전 예외사항을 충분히 고려할 수 있음
- 구현보다 시간이 적게 걸림
- 문제점 발견시 수정이 쉬움
의사코드 설계하기(문제분석 후 바로 구현시 문제점)
문제 분석 구현
- 바로 구현하기가 쉽지 않음
- 구현 후, 문제 수정은 시간이 오래걸림
- 문제가 있어도 확인이 쉽지 않음
- 흐름이 한 눈에 보이지 않음
바로 구현시
아쉬운 점
의사코드 설계하기(의사코드 작성시 장점)
문제 분석 구현
- 코드를 바로 구현하지 않고 자유롭게 설계 후 구현
- 의사코드 작성시 확인되는 문제는 수정이 쉬움
- 의사코드는 흐름을 한 눈에 확인 가능
- 전체적인 구조를 잡고 구현하면 코드 품질이 좋아짐
보완 된점
의사코드 작성
의사코드 설계하기(의사코드 작성법)
- 일반인도 이해할 정도의 논리 흐름으로 작성(세부사항까지 필요 없음)
- 추후 의사코드 대로 구현하는 경우가 많음
- 프로그래밍적 문법 사용 지양(고민이 많아짐)
의사코드 설계하기(잘못된 예시 vs 잘된 예시)
변수 A를 DataBase에 저장
포인터 변수 P에 컨테이너의 주소값 저장
1. 사용자의 정보를 저장한다:
- 사용자의 이름과 나이를 수집한다.
- 수집한 정보를 기록한다.
2. 제품 목록을 업데이트한다:
- 새로운 제품 정보를 확인한다.
- 제품 목록에 새 제품을 추가한다.
BAD Good
의사코드 설계하기(예시-알고리즘 문제 1)
알고리즘 문제:
"정수 배열이 주어지면, 모든 원소의 합을 구하고, 이를 출력하는 프로그램을 작성하시오."
1. 숫자로 이루어진 리스트를 준비한다.
2. 모든 숫자의 합을 계산한다:
- 합을 저장할 곳을 마련한다.
- 리스트의 각 숫자를 차례대로 합에 더한다.
3. 계산된 합을 출력한다.
의사코드 설계하기(예시-알고리즘 문제 2)
알고리즘 문제:
"사용자가 입력한 두 수를 비교하여 더 큰 수를 출력하는 프로그램을 작성하시오."
1. 사용자로부터 두 개의 숫자를 입력 받는다.
2. 두 숫자를 비교한다:
- 만약 첫 번째 숫자가 두 번째 숫자보다 크면, 첫 번째 숫자를 선택한다.
- 그렇지 않으면, 두 번째 숫자를 선택한다.
3. 선택된 숫자를 출력한다.
의사코드 설계하기(예시-알고리즘 문제 3)
알고리즘 문제:
"리스트에 있는 숫자들 중 가장 자주 등장하는 숫자를 찾아 출력하고, 그 숫자가 몇 번 등장했는지도 출력하는 프로그
램을 작성하시오."
1. 숫자로 이루어진 리스트를 준비한다.
2. 각 숫자가 몇 번 등장하는지 세어서 기록한다:
- 숫자별로 등장 횟수를 저장할 공간을 만든다.
- 리스트의 각 숫자에 대해, 해당 숫자의 등장 횟수를 1 증가시킨다.
3. 가장 많이 등장한 숫자를 찾는다:
- 가장 많이 등장한 숫자를 기록한다.
- 모든 숫자의 등장 횟수를 확인하면서, 가장 높은 등장 횟수를 갖는 숫자를 찾는다.
4. 가장 많이 등장한 숫자와 그 등장 횟수를 출력한다.
커뮤니티 소개
- 오픈 카톡방
- 깃허브
- 디스코드
커뮤니티 소개(오픈카톡방) cont’d
- 저자 직접 운영
- 대략 400명 정도 인원이 자유롭게 소통
- 개인적인 주제 및 코딩 관련 소통 가능
커뮤니티 소개(오픈카톡방)
커뮤니티 소개(깃허브) cont’d
- 책 문제의 정답코드
- 코딩테스트 준비를 위해 필요한 자료구조 및 알고리즘
- C++ 기본 문법
- STL의 성능 비교
커뮤니티 소개(깃허브)
커뮤니티 소개(디스코드) cont’d
- 모각코 진행
- 공식 스터디 / 개인 스터디 모집 공고 및 진행
- 책 관련 문의 / 답변
커뮤니티 소개(디스코드)

More Related Content

PPTX
코딩테스트 합격자 되기 C++ 03장 시간 복잡도에 대한 강의를 진행했습니다.
ultrasuperrok
 
PPTX
코딩테스트 합격자 되기 C++ 04_05장_코딩 테스트를 할때 반드시 알아야할 문법
ultrasuperrok
 
PPTX
코딩 테스트 합격자 되기 C++ 10장 집합에 대한 강의 자료 입니다.
ultrasuperrok
 
PPTX
코딩테스트 합격자 되기 C++ 06_07장 스택과 큐에 대한 강의 입니다.
ultrasuperrok
 
PDF
AtCoder Regular Contest 031 解説
AtCoder Inc.
 
PPTX
競技プログラミングで便利な外部ツールを大量紹介
xryuseix
 
PDF
AtCoder Beginner Contest 013 解説
AtCoder Inc.
 
PPTX
코딩테스트 합격자 되기 연말강의자료(프로그래머스 콜라보)
ultrasuperrok
 
코딩테스트 합격자 되기 C++ 03장 시간 복잡도에 대한 강의를 진행했습니다.
ultrasuperrok
 
코딩테스트 합격자 되기 C++ 04_05장_코딩 테스트를 할때 반드시 알아야할 문법
ultrasuperrok
 
코딩 테스트 합격자 되기 C++ 10장 집합에 대한 강의 자료 입니다.
ultrasuperrok
 
코딩테스트 합격자 되기 C++ 06_07장 스택과 큐에 대한 강의 입니다.
ultrasuperrok
 
AtCoder Regular Contest 031 解説
AtCoder Inc.
 
競技プログラミングで便利な外部ツールを大量紹介
xryuseix
 
AtCoder Beginner Contest 013 解説
AtCoder Inc.
 
코딩테스트 합격자 되기 연말강의자료(프로그래머스 콜라보)
ultrasuperrok
 

What's hot (20)

PDF
AtCoder Beginner Contest 005 解説
AtCoder Inc.
 
PPTX
AtCoder Beginner Contest 034 解説
AtCoder Inc.
 
PDF
[DL輪読会]Deep Learning 第12章 アプリケーション
Deep Learning JP
 
PDF
AtCoder Beginner Contest 023 解説
AtCoder Inc.
 
PDF
Code Formula 予選B 解説
AtCoder Inc.
 
PDF
深さ優先探索による塗りつぶし
AtCoder Inc.
 
PDF
Arc041
AtCoder Inc.
 
PPTX
AtCoder Beginner Contest 014 解説
AtCoder Inc.
 
PPTX
AtCoderに毎回参加したくなる仕組み
AtCoder Inc.
 
PDF
abc032
AtCoder Inc.
 
PPTX
코딩테스트 합격자 되기 C++ 00~ 01장(효율적 공부하는방법).pptx
ultrasuperrok
 
PDF
AtCoder Beginner Contest 017 解説
AtCoder Inc.
 
PPTX
AtCoder Beginner Contest 002 解説
AtCoder Inc.
 
PDF
AtCoder Beginner Contest 033 解説
AtCoder Inc.
 
PDF
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
Tae Young Lee
 
PDF
プログラミングコンテストでのデータ構造 2 ~動的木編~
Takuya Akiba
 
PDF
Abc009
AtCoder Inc.
 
PDF
単語・句の分散表現の学習
Naoaki Okazaki
 
PDF
AtCoder Beginner Contest 035 解説
AtCoder Inc.
 
PDF
AtCoder Regular Contest 028 解説
AtCoder Inc.
 
AtCoder Beginner Contest 005 解説
AtCoder Inc.
 
AtCoder Beginner Contest 034 解説
AtCoder Inc.
 
[DL輪読会]Deep Learning 第12章 アプリケーション
Deep Learning JP
 
AtCoder Beginner Contest 023 解説
AtCoder Inc.
 
Code Formula 予選B 解説
AtCoder Inc.
 
深さ優先探索による塗りつぶし
AtCoder Inc.
 
Arc041
AtCoder Inc.
 
AtCoder Beginner Contest 014 解説
AtCoder Inc.
 
AtCoderに毎回参加したくなる仕組み
AtCoder Inc.
 
abc032
AtCoder Inc.
 
코딩테스트 합격자 되기 C++ 00~ 01장(효율적 공부하는방법).pptx
ultrasuperrok
 
AtCoder Beginner Contest 017 解説
AtCoder Inc.
 
AtCoder Beginner Contest 002 解説
AtCoder Inc.
 
AtCoder Beginner Contest 033 解説
AtCoder Inc.
 
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
Tae Young Lee
 
プログラミングコンテストでのデータ構造 2 ~動的木編~
Takuya Akiba
 
Abc009
AtCoder Inc.
 
単語・句の分散表現の学習
Naoaki Okazaki
 
AtCoder Beginner Contest 035 解説
AtCoder Inc.
 
AtCoder Regular Contest 028 解説
AtCoder Inc.
 
Ad

Similar to 코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다. (20)

PDF
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
Suhyun Park
 
PDF
코딩테트2205-kucc-220508145530-8015b5d7.pdf
ssuser597fbd
 
PPTX
세미나
Dongyi Kim
 
PPTX
생각하는 프로그래밍 1부
sj k
 
PDF
Problem Solving GuideBook
Hongjun Jang
 
PPTX
[Devfest Campus Korea 2021]효율적인 문제해결 With 알고리즘
GDGCampusKorea
 
PPTX
알고리즘 문제해결전략 #1
Byeongsu Kang
 
PDF
자료구조01
JeongJunYong
 
PDF
자료구조01
herojoon1378
 
PDF
자료구조01
JeongJunYong
 
PDF
2012 Ds 01
Jungyerin
 
PDF
알고리즘 연합캠프 세미나 1-C (알고리즘 설계와 모델링 및 수학)
HYUNJEONG KIM
 
PPTX
2019 ppc answers
승혁 조
 
PDF
2015 한양대학교 프로그래밍 경시대회 - beginner division
NAVER D2
 
DOCX
이산치수학 Project7
KoChungWook
 
DOCX
자료구조 Project2
KoChungWook
 
PDF
자구2번
kangseungwoo
 
PDF
두 번째 startlink.live: 김재홍 (xhark) - 알고리즘 문제 출제 전략
Startlink
 
PDF
현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점
Wonha Ryu
 
DOCX
이산치수학 Project6
KoChungWook
 
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
Suhyun Park
 
코딩테트2205-kucc-220508145530-8015b5d7.pdf
ssuser597fbd
 
세미나
Dongyi Kim
 
생각하는 프로그래밍 1부
sj k
 
Problem Solving GuideBook
Hongjun Jang
 
[Devfest Campus Korea 2021]효율적인 문제해결 With 알고리즘
GDGCampusKorea
 
알고리즘 문제해결전략 #1
Byeongsu Kang
 
자료구조01
JeongJunYong
 
자료구조01
herojoon1378
 
자료구조01
JeongJunYong
 
2012 Ds 01
Jungyerin
 
알고리즘 연합캠프 세미나 1-C (알고리즘 설계와 모델링 및 수학)
HYUNJEONG KIM
 
2019 ppc answers
승혁 조
 
2015 한양대학교 프로그래밍 경시대회 - beginner division
NAVER D2
 
이산치수학 Project7
KoChungWook
 
자료구조 Project2
KoChungWook
 
자구2번
kangseungwoo
 
두 번째 startlink.live: 김재홍 (xhark) - 알고리즘 문제 출제 전략
Startlink
 
현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점
Wonha Ryu
 
이산치수학 Project6
KoChungWook
 
Ad

More from ultrasuperrok (14)

PDF
시간 복잡도를 제대로 정리한 자료 입니다. 개발자분들 코딩 테스트 준비에 도움이 되길 바랍니다.
ultrasuperrok
 
PDF
[HBM-PPT]코딩 테스트 제대로 공부해서 합격하는 방법 강의자료 공유 합니다.
ultrasuperrok
 
PPTX
코딩테스트 합격자 되기 C++ 16장 그리디를 강의한 자료 입니다. 영상도 있습니다.
ultrasuperrok
 
PPTX
코딩테스트 합격자 되기 C++ 15장 동적계획법에 대한 강의자료 입니다.
ultrasuperrok
 
PPTX
코딩테스트 합격자 되기 C++ 13장 정렬(sorting)에 대한 강의 자료 입니다.
ultrasuperrok
 
PPTX
코딩테스트 합격자 되기 C++ 12장 백트래킹에 대한 강의 자료 입니다.
ultrasuperrok
 
PPTX
코딩 테스트 합격자 되기 C++ 11장 그래프에 대한 강의 자료 입니다.
ultrasuperrok
 
PPTX
코딩 테스트 합격자 되기 C++ 09장 트리에 대한 강의 자료 입니다.
ultrasuperrok
 
PPTX
코딩테스트 합격자 되기 C++ 08장 해시를 설명한 강의 자료 입니다.
ultrasuperrok
 
PPTX
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
ultrasuperrok
 
PPTX
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
ultrasuperrok
 
PPTX
코딩테스트 합격자 되기 3주차 스터디 - 재귀
ultrasuperrok
 
PPTX
코딩테스트 합격자 되기 2주차 스터디 - 리스트_딕셔너리
ultrasuperrok
 
PPTX
코딩테스트 합격자 되기 1주차 스터디 - 시간복잡도.pptx
ultrasuperrok
 
시간 복잡도를 제대로 정리한 자료 입니다. 개발자분들 코딩 테스트 준비에 도움이 되길 바랍니다.
ultrasuperrok
 
[HBM-PPT]코딩 테스트 제대로 공부해서 합격하는 방법 강의자료 공유 합니다.
ultrasuperrok
 
코딩테스트 합격자 되기 C++ 16장 그리디를 강의한 자료 입니다. 영상도 있습니다.
ultrasuperrok
 
코딩테스트 합격자 되기 C++ 15장 동적계획법에 대한 강의자료 입니다.
ultrasuperrok
 
코딩테스트 합격자 되기 C++ 13장 정렬(sorting)에 대한 강의 자료 입니다.
ultrasuperrok
 
코딩테스트 합격자 되기 C++ 12장 백트래킹에 대한 강의 자료 입니다.
ultrasuperrok
 
코딩 테스트 합격자 되기 C++ 11장 그래프에 대한 강의 자료 입니다.
ultrasuperrok
 
코딩 테스트 합격자 되기 C++ 09장 트리에 대한 강의 자료 입니다.
ultrasuperrok
 
코딩테스트 합격자 되기 C++ 08장 해시를 설명한 강의 자료 입니다.
ultrasuperrok
 
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
ultrasuperrok
 
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
ultrasuperrok
 
코딩테스트 합격자 되기 3주차 스터디 - 재귀
ultrasuperrok
 
코딩테스트 합격자 되기 2주차 스터디 - 리스트_딕셔너리
ultrasuperrok
 
코딩테스트 합격자 되기 1주차 스터디 - 시간복잡도.pptx
ultrasuperrok
 

코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.

  • 1. 코딩테스트 합격자 되기 C++ 00~ 01장 저자 박경록
  • 2. 목차 코딩 테스트를 효율적으로 준비하는 방법 - 타인의 풀이를 보는 공부 법 - 아는것과 모르는 것을 명확히 하는 법 - 테스트 케이스를 고려하는 법 - 의사코드 설계하는 법
  • 3. 타인의 풀이를 보는 공부 법(고민) - 시간이 많다면 충분히 문제에 대해 혼자 고민해보는 것이 좋음 But…. “대부분 수험생들은 시간이 부족함”
  • 4. 타인의 풀이를 보는 공부 법(방법) 1. 최소한 30분 ~ 1시간 정도 고민한다. 2. 그래도 답이 나오지 않을 경우, 답안코드를 본다. => 답안 코드에서 본인이 해결하지 못한 부분을 해결한 코드를 정리 => 답안 코드에서 사용한 알고리즘과 매칭되는 부분을 문제에서 분석 => 2주 정도 후에 다시 구현
  • 5. 타인의 풀이를 보는 공부 법(예시 - 문제) 입력: nums = [2, 7, 11, 15], target = 9 출력: [0, 1] 설명: nums[0] + nums[1] = 2 + 7 = 9 이므로 정답은 [0, 1]입니다 제한 : 입력 크기는 최대 100만 이고 제한시간은 1초 입니다.
  • 6. 타인의 풀이를 보는 공부 법(예시 - 내 코드 vs 정답 코드) 해결하지 못한 코드 정답 코드 ① ②
  • 7. 타인의 풀이를 보는 공부 법(정리) 문제 입력값이 100만 인데, O(N^2) 알고리즘으로 접근해서 TLE 발생 - 정답 코드는 unordered_map을 활용해서 O(N)으로 개선함 => 각 숫자를 unordered_map의 키로 활용 깨달은 점 - 다음 부터는 입력값을 꼭 확인해서 문제에서 요구하는 시간복잡도를 충족 시키자! - 자료구조에 의해서도 시간 복잡도가 영향을 받을 수 있음(자료구조에 맞게 구현하므로)
  • 8. 아는것과 모르는것을 명확히 하는 법(방법) - 아는 것만 공부하면 얻는 것은 자신감 뿐… 7:3을 지키자. - 단순 기록 대신 나만의 용어로 정리
  • 9. 7:3을 지키자 - 기존 지식을 활용한 문제 풀이 - 기존에 틀렸던 부분 복습 - 새로운 개념 학습 및 문제 풀이 - 기존에 많이 틀렸던 알고리즘 문제 풀이 - 해결하지 못한 부분은 명확히 정리 알고있는 부분(30%) 모르는 부분(70%)
  • 10. 단순기록 대신 나만의 용어로 정리하자(방법) - 나열식 정리는 타자연습과 다를바가 없습니다.(머리에 남지 않음) - 개념을 머릿속에서 끝까지 이해한 후에, 완성된 문장으로 정리 합니다. => ??? ….. 이런걸 포함한다면 정리하는 의미가 없습니다.
  • 11. 단순기록 대신 나만의 용어로 정리하자(예시) 정렬 사용자가 정의한 기준대로, 데이 터를 나열하는 것 => 이진탐색 사용 가능 시간 복잡도 비교정렬 : O(NlogN) 비-비교 정렬 : O(N)까지 가능 예시 코드 //something 나만의 언어로 변환
  • 12. 테스트 케이스 설계 하는 법(방법) - 기본 케이스 - 경계값 - 에지 케이스
  • 13. 테스트 케이스 설계 하는 법(기본 케이스) - 문제에서 설명한 “기본 동작”이 제대로 동작하는지 확인하는 케이스 문제: 두 정수를 입력받아 합을 반환하라. 입력: a=2,b=3 기대 출력: 5 테스트 케이스: assert sum(2, 3) == 5 문제: 주어진 문자열을 뒤집어 반환하라. 입력: "hello" 기대 출력: "olleh" 테스트 케이스: assert reverse("hello") == "olleh"
  • 14. 테스트 케이스 설계 하는 법(경계 값) - 입력값의 양 끝값을 테스트 함 문제: 주어진 양의 정수의 제곱근을 반환하라. 정수 부분만 반환한다. 입력 범위: 1에서 10^6 까지 최소값 입력: 1 테스트: assert sqrt(1) == 1 최대값 입력: 10^7 테스트: assert sqrt(10^6) == 1000 문제: 정수 배열과 타겟 정수가 주어졌을 때, 타겟의 인덱스를 반환 하라. 없으면 -1을 반환. 입력: 배열 [2,3,5,7,11], 타겟 3 경계값 테스트 케이스: 배열의 첫 요소: 2 테스트: assert find_index([2, 3, 5, 7, 11], 2) == 0 배열의 마지막 요소: 11 테스트: assert find_index([2, 3, 5, 7, 11], 11) == 4
  • 15. 테스트 케이스 설계 하는 법(에지 케이스) - 예상치 못한 입력값이나 특수한 조건 문제: 주어진 정수가 소수인지 아닌지를 판별하라. 에지 케이스: 음수 입력: 테스트: assert is_prime(-1) == False 입력: 0 0은 소수가 아닙니다. 테스트: assert is_prime(0) == False 입력: 1 1은 소수가 아닙니다. 테스트: assert is_prime(1) == False 문제: 주어진 정수가 소수인지 아닌지를 판별하라. 에지 케이스: 음수 입력: 소수의 정의는 양의 정수에만 적용됩니다. 테스트: assert is_prime(-1) == False 입력: 0 0은 소수가 아닙니다. 테스트: assert is_prime(0) == False 입력: 1 1은 소수가 아닙니다. 테스트: assert is_prime(1) == False
  • 16. 의사코드 작성하기 의사코드 -> 구현 전, 비 프로그래밍 언어로 동작을 나열하는 것 장점 - 구현 전 예외사항을 충분히 고려할 수 있음 - 구현보다 시간이 적게 걸림 - 문제점 발견시 수정이 쉬움
  • 17. 의사코드 설계하기(문제분석 후 바로 구현시 문제점) 문제 분석 구현 - 바로 구현하기가 쉽지 않음 - 구현 후, 문제 수정은 시간이 오래걸림 - 문제가 있어도 확인이 쉽지 않음 - 흐름이 한 눈에 보이지 않음 바로 구현시 아쉬운 점
  • 18. 의사코드 설계하기(의사코드 작성시 장점) 문제 분석 구현 - 코드를 바로 구현하지 않고 자유롭게 설계 후 구현 - 의사코드 작성시 확인되는 문제는 수정이 쉬움 - 의사코드는 흐름을 한 눈에 확인 가능 - 전체적인 구조를 잡고 구현하면 코드 품질이 좋아짐 보완 된점 의사코드 작성
  • 19. 의사코드 설계하기(의사코드 작성법) - 일반인도 이해할 정도의 논리 흐름으로 작성(세부사항까지 필요 없음) - 추후 의사코드 대로 구현하는 경우가 많음 - 프로그래밍적 문법 사용 지양(고민이 많아짐)
  • 20. 의사코드 설계하기(잘못된 예시 vs 잘된 예시) 변수 A를 DataBase에 저장 포인터 변수 P에 컨테이너의 주소값 저장 1. 사용자의 정보를 저장한다: - 사용자의 이름과 나이를 수집한다. - 수집한 정보를 기록한다. 2. 제품 목록을 업데이트한다: - 새로운 제품 정보를 확인한다. - 제품 목록에 새 제품을 추가한다. BAD Good
  • 21. 의사코드 설계하기(예시-알고리즘 문제 1) 알고리즘 문제: "정수 배열이 주어지면, 모든 원소의 합을 구하고, 이를 출력하는 프로그램을 작성하시오." 1. 숫자로 이루어진 리스트를 준비한다. 2. 모든 숫자의 합을 계산한다: - 합을 저장할 곳을 마련한다. - 리스트의 각 숫자를 차례대로 합에 더한다. 3. 계산된 합을 출력한다.
  • 22. 의사코드 설계하기(예시-알고리즘 문제 2) 알고리즘 문제: "사용자가 입력한 두 수를 비교하여 더 큰 수를 출력하는 프로그램을 작성하시오." 1. 사용자로부터 두 개의 숫자를 입력 받는다. 2. 두 숫자를 비교한다: - 만약 첫 번째 숫자가 두 번째 숫자보다 크면, 첫 번째 숫자를 선택한다. - 그렇지 않으면, 두 번째 숫자를 선택한다. 3. 선택된 숫자를 출력한다.
  • 23. 의사코드 설계하기(예시-알고리즘 문제 3) 알고리즘 문제: "리스트에 있는 숫자들 중 가장 자주 등장하는 숫자를 찾아 출력하고, 그 숫자가 몇 번 등장했는지도 출력하는 프로그 램을 작성하시오." 1. 숫자로 이루어진 리스트를 준비한다. 2. 각 숫자가 몇 번 등장하는지 세어서 기록한다: - 숫자별로 등장 횟수를 저장할 공간을 만든다. - 리스트의 각 숫자에 대해, 해당 숫자의 등장 횟수를 1 증가시킨다. 3. 가장 많이 등장한 숫자를 찾는다: - 가장 많이 등장한 숫자를 기록한다. - 모든 숫자의 등장 횟수를 확인하면서, 가장 높은 등장 횟수를 갖는 숫자를 찾는다. 4. 가장 많이 등장한 숫자와 그 등장 횟수를 출력한다.
  • 24. 커뮤니티 소개 - 오픈 카톡방 - 깃허브 - 디스코드
  • 25. 커뮤니티 소개(오픈카톡방) cont’d - 저자 직접 운영 - 대략 400명 정도 인원이 자유롭게 소통 - 개인적인 주제 및 코딩 관련 소통 가능
  • 27. 커뮤니티 소개(깃허브) cont’d - 책 문제의 정답코드 - 코딩테스트 준비를 위해 필요한 자료구조 및 알고리즘 - C++ 기본 문법 - STL의 성능 비교
  • 29. 커뮤니티 소개(디스코드) cont’d - 모각코 진행 - 공식 스터디 / 개인 스터디 모집 공고 및 진행 - 책 관련 문의 / 답변