티스토리 뷰

알고리즘 공부를 할 때 효과적인 방법


- 답을 보는 것이 부끄러운 것이 아니다.

- 문제를 풀 수 있는만큼 많이 풀어보자

- 라이벌을 정해보자( 단 이길 수 있을 것 같은 사람으로)



프로그래밍에서 하는 흔한 실수

- 쉬운 문제를 어렵게 푸는 것

- 컴퓨터가 잘하는 것은 따로 있다

- 컴퓨터가 잘하는 것을 최대한 활용하자.


가능한 모든 경우의 수를 다 해보는 것이 중요하다!


- 재귀 호출은 완전 탐색을 구현하는데 아주 효율적인 도구


재귀 함수를 구현하는 방법은 정형화 되어 있음

1. 기저 사례를 작성한다 : 함수가 끝나는 시점을 기저 사례라고 한다.

2. 재귀 함수를 호출한다.

3. 값을 반환한다.




단어의 개수(BOJ 1152)

1. 여러 단어가 한 줄에 걸쳐 주어진다.

2. 각 단어는 공백으로 구분 된다.

3. 입출력의 원리를 이해하고 있어야 한다.


단어 공부(BOJ 1157)

- 단어를 소문자 혹은 대문자로 변환

- 변환된 단어에 대해 사용된 알파벳의 수를 확인(아스키 코드)

- 아스키 코드를 활용하면 아주 쉽게 셀 수 있음. 알파벳 카운팅 배열 이용

- 문자 비교는 아스키 코드로 비교를 하게 된다.

- 대문자와 소문자를 비교할 때는 아스키 코드 32 만큼 차이가 난다.


최소공배수(BOJ 1934)

- 최소공배수를 어떻게 구할까? 

1. A, B의 최대공약수를 gcd라 하자.

2. A, B의 최소공배수는 A * B / gcd로 계산이 가능하다.

3. gcd는 유클리드 호제법으로 쉽게 구할 수 있다.


A         B

128     76

76      52

52      24

24     4

4       0




부분집합의 개수의 합



단어 나누기

- 케이스가 많지 않기 때문에 최적해보다는 전부다 해보는 것이 맞다.

- 만들 수 있는 모든 케이스를 만들어라.


팀원 구하기

- 비트 연산자로 이진수를 만들어서 각팀원이 풀수 있는 문제의 인덱스를 1로 표시한다.


































댓글