SlideShare a Scribd company logo
1 of 48
알고리즘 문제풀이 팁
25-1기 서주리
“ ”
INDEX
힘드시져?
알고리즘 문제풀이 팁
파이팅^_^
문제를 손으로 풀어라
1
문제를 손으로 풀어라
문제를 손으로 풀기 전 까지는
키보드에 손을 대지 말기!!
문제를 손으로 풀어라
“ 코드작성 == 번역 ”
완성되지 않은 글이 아닌 것을 번역하는 것
=> 결과가 나오는 것이 이상하다^_^
변수명, 함수명은
가독성있게!
2
변수명, 함수명은 가독성 있게!
int daycount;
날짜를 세는데 어떻게?
날짜? 하루?
무슨 기준으로?
어떻게 세는데? 날짜를??
왜 날짜를 카운트 하는거야?
변수명, 함수명은 가독성 있게!
int daysPerMonth;
한 달의 날짜를 나타내는 변수구낭^_^
변수명, 함수명은 가독성 있게!
단, tmp를
temporaryIntegerDataVariable로
하지는 말자^_^
주석을 활용하라
3
주석을 활용하라
int k;
int k; // num of nodes
or 변수명을 바꾸면됨.
주석을 활용하라
다른 예~
for i = 1 to factorial(n)
// 총 조합의 수는 n!
전역 배열을 활용하라
4
전역 배열을 활용하라
배열을 함수로 넘기는 것이 익숙하지 않다면
가독성을 해치지 않는 한에서! ^_^
C++문법을 활용하라
5
C++문법을 활용하라
중간 변수선언이 가능!
int jool;
…
…
for i=1 to 10
jool++;
…
…
int jool;
for i=1 to 10
jool++;
애매한 상황에서
디버깅은 NO
6
애매한 상황에서 디버깅은 NO
맞게 짰다고 생각했는데
값이 예상과 다르게 나올 때
ㅠ_ㅠ
냠
이외에는,
디버깅을 활용하라
7
디버깅을 활용하라
아까는 피하라며 !!
남용 (X)
기본적으로는 필수!
디버깅을 활용하라
프로그램 로직을
분리하라
8
프로그램 로직을 분리하라
1. init : 초기화
2. input : 입력
3. proc : 처리
4. Output : 출력
덧, proc과 output이 합쳐져 있는 경우도 있다^_^
한줄짜리 if와 for는
웬만하면 자제!
9
한줄짜리 if 와 for 는 웬만하면 자제!
if (exit != 0) cnt++;
변경!
exit가 0이 아니면
exit를 0으로 만들고 cnt를 증가
if (exit != 0)
exit = 0;
cnt++;
단항 증감연산자는
최대한 따로 놓자
10
단항 증감연산자는 최대한 따로
명확하지 않은 단항 증감연산자는 실수를 유발
arr[row][++col] = data;
col++;
arr[row][col] = data;
단항 증감연산자는 최대한 따로
int i=1;
i = ++i + i++ + ++i;
결과는?
적합한 기본 함수를
사용하자
11
적합한 기본 함수를 사용하자
문자열의 길이는 최대 20
문자열의 개수는 3
char stringArr[3][21]; //include null terminated
입력 받은 문자열 input[21]을 2번째 행에 복사
for(int i=0; i<21; i++) {
stringArr[1][i] = input[i];
}
적합한 기본 함수를 사용하자
strcpy(stringArr[1], input);
기본 함수로 바꾸기 가능~!
printf, scanf, gets, atoi, strcpy, strncpy, memset, strlen, strcat, strcmp, strstr, ...
다음 함수 정도는 기본적으로 사용하자
적합한 함수보다는
적합한 구문을 사용하자
12
적합한 함수보다는 적합한 구문을 사용하자
입력 받은 대문자를 소문자로 바꾸는 프로그램
문자열 길이는 최대 20
for (int i=0; i<strlen(input); i++) {
printf(“%c”,input[i]+32);
}
for (int i=0; input[i]!=’0’; i++) {
printf(“%c”,input[i]+32);
}
배열의 초기화 이슈
13
배열의 초기화 이슈
char arr[100]={0,};
기본적으로,
배열의 초기화는 컴파일러 최적화 옵션이 걸려있을 때,
int arr[100];
memset(arr, 0, 100 * sizeof(int));
위와 같이 하면 자동으로 최적화된다!
배열의 초기화 이슈
사실.. memset은 엄청 느리다!
1. 초기화를 안하도록 하는 것
2. 선언을 통한 초기화
3. 전 턴에 사용한 부분만 초기화
4. 전체를 초기화
5. 초기화 까먹는 것 ㅠ_ㅠ // worst
기본 수학적 구현을
알아두라
14
기본 수학적 구현을 알아두라
최대공약수
최소공배수
소수
약수
자리수 떼어내기
루트 구하기
정수 판별
…
등
문제에서 알고리즘을 제시해주지 않는 경우가 많음.
알아두자^_^
배열의 크기
15
배열의 크기
메모리 사이즈 : 30,000KB~256,000KB
=> 생각보다 크다!
1,000정도의 범위에서는 마구 선언해도 좋다^_^
문자와 정수는 같음을
유의 하라
16
문자와 정수는 같음을 유의 하라
입력으로 계산식을 받는 프로그램
• 숫자면 doNumberAction();
• ‘+’이면 doPlus();
if(commandArr[i] == ‘+’) {
doPlus();
} else {
doNumberAction();
}
혼란을 피하는 방법
17
혼란을 피하는 방법
소탐대실
요약
18
요약
인간의 뇌의 한계를 인정하고,
그 상황에서 최적의 방법을 모색한다.
실수할 확률을 하나씩 줄여나가고,
혼란의 도가니를 벗어나보자.
150709 알고리즘문제풀이팁
150709 알고리즘문제풀이팁

More Related Content

What's hot

연산자 오버로딩
연산자 오버로딩연산자 오버로딩
연산자 오버로딩수빈 박
 
C++ Template/STL study
C++ Template/STL studyC++ Template/STL study
C++ Template/STL studySeo Dong-yu
 
[Swift] Generics
[Swift] Generics[Swift] Generics
[Swift] GenericsBill Kim
 
C수업자료
C수업자료C수업자료
C수업자료koominsu
 
Parallel objects
Parallel objectsParallel objects
Parallel objects용준 김
 
Start IoT with JavaScript - 4.객체1
Start IoT with JavaScript - 4.객체1Start IoT with JavaScript - 4.객체1
Start IoT with JavaScript - 4.객체1Park Jonggun
 
03. function in typescript
03. function in typescript03. function in typescript
03. function in typescriptHan JaeYeab
 
파이썬 숫자,변수,문자열
파이썬 숫자,변수,문자열파이썬 숫자,변수,문자열
파이썬 숫자,변수,문자열HoYong Na
 
Start IoT with JavaScript - 5.객체2
Start IoT with JavaScript - 5.객체2Start IoT with JavaScript - 5.객체2
Start IoT with JavaScript - 5.객체2Park Jonggun
 
프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기Jongwook Choi
 
Start IoT with JavaScript - 2.연산자
Start IoT with JavaScript - 2.연산자Start IoT with JavaScript - 2.연산자
Start IoT with JavaScript - 2.연산자Park Jonggun
 
코딩인카페 C&JAVA 기초과정 C프로그래밍(2)
코딩인카페 C&JAVA 기초과정 C프로그래밍(2)코딩인카페 C&JAVA 기초과정 C프로그래밍(2)
코딩인카페 C&JAVA 기초과정 C프로그래밍(2)유익아카데미
 
Python basic grammer
Python basic grammerPython basic grammer
Python basic grammerCore.Today
 
[자바카페] 람다 일괄처리 계층 사례
[자바카페] 람다 일괄처리 계층 사례[자바카페] 람다 일괄처리 계층 사례
[자바카페] 람다 일괄처리 계층 사례용호 최
 
2 swift 상수,변수,튜풀 옵셔널
2 swift 상수,변수,튜풀 옵셔널2 swift 상수,변수,튜풀 옵셔널
2 swift 상수,변수,튜풀 옵셔널Changwon National University
 

What's hot (19)

연산자 오버로딩
연산자 오버로딩연산자 오버로딩
연산자 오버로딩
 
C++ Template/STL study
C++ Template/STL studyC++ Template/STL study
C++ Template/STL study
 
[Swift] Generics
[Swift] Generics[Swift] Generics
[Swift] Generics
 
C수업자료
C수업자료C수업자료
C수업자료
 
Lua script
Lua scriptLua script
Lua script
 
Parallel objects
Parallel objectsParallel objects
Parallel objects
 
Start IoT with JavaScript - 4.객체1
Start IoT with JavaScript - 4.객체1Start IoT with JavaScript - 4.객체1
Start IoT with JavaScript - 4.객체1
 
C++11 1
C++11 1C++11 1
C++11 1
 
03. function in typescript
03. function in typescript03. function in typescript
03. function in typescript
 
파이썬 숫자,변수,문자열
파이썬 숫자,변수,문자열파이썬 숫자,변수,문자열
파이썬 숫자,변수,문자열
 
Start IoT with JavaScript - 5.객체2
Start IoT with JavaScript - 5.객체2Start IoT with JavaScript - 5.객체2
Start IoT with JavaScript - 5.객체2
 
프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기
 
MEC++ 3,4
MEC++ 3,4MEC++ 3,4
MEC++ 3,4
 
Start IoT with JavaScript - 2.연산자
Start IoT with JavaScript - 2.연산자Start IoT with JavaScript - 2.연산자
Start IoT with JavaScript - 2.연산자
 
코딩인카페 C&JAVA 기초과정 C프로그래밍(2)
코딩인카페 C&JAVA 기초과정 C프로그래밍(2)코딩인카페 C&JAVA 기초과정 C프로그래밍(2)
코딩인카페 C&JAVA 기초과정 C프로그래밍(2)
 
Python basic grammer
Python basic grammerPython basic grammer
Python basic grammer
 
Lua 문법
Lua 문법Lua 문법
Lua 문법
 
[자바카페] 람다 일괄처리 계층 사례
[자바카페] 람다 일괄처리 계층 사례[자바카페] 람다 일괄처리 계층 사례
[자바카페] 람다 일괄처리 계층 사례
 
2 swift 상수,변수,튜풀 옵셔널
2 swift 상수,변수,튜풀 옵셔널2 swift 상수,변수,튜풀 옵셔널
2 swift 상수,변수,튜풀 옵셔널
 

Similar to 150709 알고리즘문제풀이팁

스칼라와 스파크 영혼의 듀오
스칼라와 스파크 영혼의 듀오스칼라와 스파크 영혼의 듀오
스칼라와 스파크 영혼의 듀오Taeoh Kim
 
2012 Ds B1 01
2012 Ds B1 012012 Ds B1 01
2012 Ds B1 01seonhyung
 
자료구조 Project6
자료구조 Project6자료구조 Project6
자료구조 Project6KoChungWook
 
C수업자료
C수업자료C수업자료
C수업자료koominsu
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심흥배 최
 
파이썬 스터디 2주차
파이썬 스터디 2주차파이썬 스터디 2주차
파이썬 스터디 2주차Han Sung Kim
 
문과생 대상 파이썬을 활용한 데이터 분석 강의
문과생 대상 파이썬을 활용한 데이터 분석 강의문과생 대상 파이썬을 활용한 데이터 분석 강의
문과생 대상 파이썬을 활용한 데이터 분석 강의Kwangyoun Jung
 
1.자료구조와 알고리즘(강의자료)
1.자료구조와 알고리즘(강의자료)1.자료구조와 알고리즘(강의자료)
1.자료구조와 알고리즘(강의자료)fmbvbfhs
 
숫자 구분자 처리 (Digit group separators)
숫자 구분자 처리 (Digit group separators)숫자 구분자 처리 (Digit group separators)
숫자 구분자 처리 (Digit group separators)중선 곽
 
코딩인카페 C&JAVA 기초과정 C프로그래밍(3)
코딩인카페 C&JAVA 기초과정 C프로그래밍(3)코딩인카페 C&JAVA 기초과정 C프로그래밍(3)
코딩인카페 C&JAVA 기초과정 C프로그래밍(3)유익아카데미
 
[C언어]함수오버로딩과오버라이딩
[C언어]함수오버로딩과오버라이딩[C언어]함수오버로딩과오버라이딩
[C언어]함수오버로딩과오버라이딩jusingame
 
More effective c++ chapter1 2_dcshin
More effective c++ chapter1 2_dcshinMore effective c++ chapter1 2_dcshin
More effective c++ chapter1 2_dcshinDong Chan Shin
 
[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features Summary[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features SummaryChris Ohk
 
프로그래밍 및 실습 Chap2
프로그래밍 및 실습 Chap2프로그래밍 및 실습 Chap2
프로그래밍 및 실습 Chap2dktm
 

Similar to 150709 알고리즘문제풀이팁 (20)

HI-ARC PS 101
HI-ARC PS 101HI-ARC PS 101
HI-ARC PS 101
 
C review
C  reviewC  review
C review
 
스칼라와 스파크 영혼의 듀오
스칼라와 스파크 영혼의 듀오스칼라와 스파크 영혼의 듀오
스칼라와 스파크 영혼의 듀오
 
2012 Ds B1 01
2012 Ds B1 012012 Ds B1 01
2012 Ds B1 01
 
자료구조 Project6
자료구조 Project6자료구조 Project6
자료구조 Project6
 
2012 Ds 01
2012 Ds 012012 Ds 01
2012 Ds 01
 
C수업자료
C수업자료C수업자료
C수업자료
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심
 
파이썬 스터디 2주차
파이썬 스터디 2주차파이썬 스터디 2주차
파이썬 스터디 2주차
 
문과생 대상 파이썬을 활용한 데이터 분석 강의
문과생 대상 파이썬을 활용한 데이터 분석 강의문과생 대상 파이썬을 활용한 데이터 분석 강의
문과생 대상 파이썬을 활용한 데이터 분석 강의
 
1.자료구조와 알고리즘(강의자료)
1.자료구조와 알고리즘(강의자료)1.자료구조와 알고리즘(강의자료)
1.자료구조와 알고리즘(강의자료)
 
06장 함수
06장 함수06장 함수
06장 함수
 
숫자 구분자 처리 (Digit group separators)
숫자 구분자 처리 (Digit group separators)숫자 구분자 처리 (Digit group separators)
숫자 구분자 처리 (Digit group separators)
 
6 function
6 function6 function
6 function
 
코딩인카페 C&JAVA 기초과정 C프로그래밍(3)
코딩인카페 C&JAVA 기초과정 C프로그래밍(3)코딩인카페 C&JAVA 기초과정 C프로그래밍(3)
코딩인카페 C&JAVA 기초과정 C프로그래밍(3)
 
[C언어]함수오버로딩과오버라이딩
[C언어]함수오버로딩과오버라이딩[C언어]함수오버로딩과오버라이딩
[C언어]함수오버로딩과오버라이딩
 
7그룹 코드
7그룹 코드7그룹 코드
7그룹 코드
 
More effective c++ chapter1 2_dcshin
More effective c++ chapter1 2_dcshinMore effective c++ chapter1 2_dcshin
More effective c++ chapter1 2_dcshin
 
[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features Summary[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features Summary
 
프로그래밍 및 실습 Chap2
프로그래밍 및 실습 Chap2프로그래밍 및 실습 Chap2
프로그래밍 및 실습 Chap2
 

More from Ju-ri Seo

Jurano강의 lec7 android_annotations_resource_injection_and_rest_api
Jurano강의 lec7 android_annotations_resource_injection_and_rest_apiJurano강의 lec7 android_annotations_resource_injection_and_rest_api
Jurano강의 lec7 android_annotations_resource_injection_and_rest_apiJu-ri Seo
 
Jurano강의 lec6 android_annotations_threading
Jurano강의 lec6 android_annotations_threadingJurano강의 lec6 android_annotations_threading
Jurano강의 lec6 android_annotations_threadingJu-ri Seo
 
Jurano강의 lec5 android_annotations_event_binding
Jurano강의 lec5 android_annotations_event_bindingJurano강의 lec5 android_annotations_event_binding
Jurano강의 lec5 android_annotations_event_bindingJu-ri Seo
 
Jurano강의 lec4 android_annotations_application
Jurano강의 lec4 android_annotations_applicationJurano강의 lec4 android_annotations_application
Jurano강의 lec4 android_annotations_applicationJu-ri Seo
 
Jurano강의 lec3 android_annotations_enhanced_components
Jurano강의 lec3 android_annotations_enhanced_componentsJurano강의 lec3 android_annotations_enhanced_components
Jurano강의 lec3 android_annotations_enhanced_componentsJu-ri Seo
 
Jurano강의 lec2. sample application 둘러보기
Jurano강의 lec2. sample application 둘러보기Jurano강의 lec2. sample application 둘러보기
Jurano강의 lec2. sample application 둘러보기Ju-ri Seo
 
Jurano강의 lec1. AndroidAnnotations 시작하기
Jurano강의 lec1. AndroidAnnotations 시작하기Jurano강의 lec1. AndroidAnnotations 시작하기
Jurano강의 lec1. AndroidAnnotations 시작하기Ju-ri Seo
 
150708 알고리즘 문제풀이 이것은 알자
150708 알고리즘 문제풀이 이것은 알자150708 알고리즘 문제풀이 이것은 알자
150708 알고리즘 문제풀이 이것은 알자Ju-ri Seo
 

More from Ju-ri Seo (8)

Jurano강의 lec7 android_annotations_resource_injection_and_rest_api
Jurano강의 lec7 android_annotations_resource_injection_and_rest_apiJurano강의 lec7 android_annotations_resource_injection_and_rest_api
Jurano강의 lec7 android_annotations_resource_injection_and_rest_api
 
Jurano강의 lec6 android_annotations_threading
Jurano강의 lec6 android_annotations_threadingJurano강의 lec6 android_annotations_threading
Jurano강의 lec6 android_annotations_threading
 
Jurano강의 lec5 android_annotations_event_binding
Jurano강의 lec5 android_annotations_event_bindingJurano강의 lec5 android_annotations_event_binding
Jurano강의 lec5 android_annotations_event_binding
 
Jurano강의 lec4 android_annotations_application
Jurano강의 lec4 android_annotations_applicationJurano강의 lec4 android_annotations_application
Jurano강의 lec4 android_annotations_application
 
Jurano강의 lec3 android_annotations_enhanced_components
Jurano강의 lec3 android_annotations_enhanced_componentsJurano강의 lec3 android_annotations_enhanced_components
Jurano강의 lec3 android_annotations_enhanced_components
 
Jurano강의 lec2. sample application 둘러보기
Jurano강의 lec2. sample application 둘러보기Jurano강의 lec2. sample application 둘러보기
Jurano강의 lec2. sample application 둘러보기
 
Jurano강의 lec1. AndroidAnnotations 시작하기
Jurano강의 lec1. AndroidAnnotations 시작하기Jurano강의 lec1. AndroidAnnotations 시작하기
Jurano강의 lec1. AndroidAnnotations 시작하기
 
150708 알고리즘 문제풀이 이것은 알자
150708 알고리즘 문제풀이 이것은 알자150708 알고리즘 문제풀이 이것은 알자
150708 알고리즘 문제풀이 이것은 알자
 

150709 알고리즘문제풀이팁

Editor's Notes

  1. : 코드작성은 번역일뿐. 그 전에 코드를 작성하는 건 완성된 글이 아닌 것을 번역하는 것. 결과가 나오는 것이 이상하다. 풀다보면 나오겠지 == 안풀리면 말고
  2. 용도를 알 수 없다
  3. 이게 어떤 의미인지는 다들 아시겠죠?^_^
  4. 다시 이 변수가 무엇인지 확인하고 싶지 않다면
  5. 팩토리얼을 구한다면 팩토리얼을 구하는 이유. 뭐든지 적당히^_^
  6. 로직이 들어가는 곳 근처에 변수선언을 하는 것은 종스크롤 시간을 줄여준다. 개발 시간 중 키보드를 치는 시간은 은근히 별로 없다.
  7. 애매한 코드에서의 디버깅을 하는 것은 차라리 문제를 다시 손으로 푸는 것이 낫다
  8. 디버깅의 남용은 문제풀이의 속디버깅의 남용은 문제풀이의 속도저하와 뇌의 혼란을 유발하지만, 디버깅이 없는 개발은 생각하기 싫은 것은 확실하다
  9. 디버깅의 남용은 문제풀이의 속도저하와 뇌의 혼란을 유발하지만, 디버깅이 없는 개발은 생각하기 싫은 것은 확실하다. 다음 정도는 반드시 익숙해지자!
  10. 초기화 단계를 명시하지 않으면 꼭 한번씩 빼먹게 되어있다. 나약한 닝겐 ㅋ.... 덧, proc과 output이 합쳐져 있는 경우도 있다.
  11. 위와 같은 이유에서 다음의 상황을 생각해보자. exit가 0이 아니면 cnt증가시키는 구문이다. if (exit != 0) cnt++; 여기에 exit가 0이 아니면 exit를 0으로 만들고 cnt를 증가시킨다고 변경시켜보자. if (exit != 0) exit = 0; cnt++; 저딴 실수를 하는 건 호구 아니냐고 생각할지 모르겠지만, 한 번이라도 이런 실수를 해본 적이 있다면 다시는 이러지 말자. 애초에 이렇게 했다면 실수할 확률이 없다. if (exit != 0) { cnt++; }
  12. 명확하지 않은 단항 증감연산자는 실수를 유발한다. 적어도 나는 실수한다. 마찬가지로, 이렇게 나눠쓰자. 우리는 짧은 코드 대회에 나가는 것이 아님을 기억하자. 덧, i = ++i + i++ + ++i; 이것의 결과는 뭔가? 이것은 표준에 명시되지 않은 문법이다. 절대 한 행에 섞어 쓰면 안된다. 즉, 결과는 컴파일러마다 다르다.
  13. 명확하지 않은 단항 증감연산자는 실수를 유발한다. 적어도 나는 실수한다. 마찬가지로, 이렇게 나눠쓰자. 우리는 짧은 코드 대회에 나가는 것이 아님을 기억하자. 덧, i = ++i + i++ + ++i; 이것의 결과는 뭔가? 이것은 표준에 명시되지 않은 문법이다. 절대 한 행에 섞어 쓰면 안된다. 즉, 결과는 컴파일러마다 다르다.
  14. 문자열의 배열을 생각해보자. 문자열의 길이는 최대 20이고, 문자열의 개수는 3개이다. 그러면 선언은 다음과 같다.
  15. 다음의 함수 정도는 기본적으로 사용하자. (멤버십의 추세는 math.h와 qsort()를 사용하지 않는 것이라는 것만 참고하자) 특히나 문자열관련 함수는 모르면 캐불리. printf, scanf, gets, atoi, strcpy, strncpy, memset, strlen, strcat, strcmp, strstr, ...    
  16. 이렇게 하면 어떤가? strlen()을 호출하는 것은 느리다. 함수 호출을 안할 수 있으면 안하는게 좋다.
  17. (memset을 호출하지 않는 쪽으로 최적화됨)
  18. (memset을 호출하지 않는 쪽으로 최적화됨)
  19. 100,000^2 같은 선언이 아닌 이상에야, 1,000정도의 범위에서는 마구 선언해도 좋다. bound 초과를 피하기 위해 +1~2 정도 선언하는 것을 추천한다
  20. 근데, 여기서 ‘+’의 아스키 코드는 43이다. 즉, 숫자에 43이 들어온다면 예측할 수 없는 결과를 낸다. 이 경우, ‘+’를 -43 등으로 지정해주는 꼼수(숫자는 양의 정수랬으니까)를 쓰거나, operator와 operand의 배열을 따로 두는 방법을 사용해야 한다.
  21. 문제를 풀다 보면 혼란 속에서 헤매다가 대부분의 시간이 가는 경우가 많다. 바람을 쐬고 음료수를 마시고, 잠깐의 휴식은 뇌의 활용에 도움이 가지 않는가 ._? 소탐대실을 기억하자.
  22. 인간의 뇌의 한계를 인정하고, 그 상황에서 최적의 방법을 모색한다. 실수할 확률을 하나씩 줄여나가고, 혼란의 도가니를 벗어나보자.