알고리즘 문제에서 시간제한이 있다. 시간제한에 대해 자신의 코드가 최악의 경우에 몇 초정도 나오는지 시간함수를 통해정확히 알아낼 수도 있지만 대략 짐작을 빠르게 할 수 있다. 시간 복잡도 표기법에는 3개가 있다.빅오 표기법 : 알고리즘 실행시간의 상한오메가 표기법 : 알고리즘 실행시간의 하한세타 표기법 : 알고리즘 실행시간의 평균시간 먼저, 자신의 코드의 시간복잡도 빅오를 계산한다. 대부분의 코드가 n제곱이거나 n로그n인 경우가 많다.그 후 문제의 제한 범위를 고려하여 입력이 몇개 들어가는지 고려한다. 대략, n삼승의 알고리즘은 2560의 입력까지 1초 안에 풀 수 있다.n제곱의 알고리즘은 40960의 입력까지 1초 안에 풀 수 있다.n로그n의 알고리즘은 20,000,000의 입력까지 1초 안에 풀 수 ..
char를 사용하면 아스키 코드가 필요할 때가 있다. 자주 쓰는 것은 char로 정수를 받아 쓰고 싶을 때 '0'을 빼줄 때가 많다. 이유는 아스키코드표를 보면 알 수 있다. 자주 쓰는 것을 정리하면0 ~ 9 : 48 ~ 57 // '0' (48) 을 빼주면 10진수로 변환된다. A ~ Z : 65 ~ 90 // 대문자와 소문자는 32 차이가 난다.a ~ z : 97 ~ 122 사진 출처 : http://hack-cracker.tistory.com/166 작성자 : 히더
알고리즘 문제를 풀때 시간초과가 걸리는 경우가 종종 있다.시간이 초과 된다면 알고리즘이 틀린 경우이며 새로운 방법으로 가거나 조건을 추가해서 반복이나 재귀를 줄여야 한다. 그리고 대회 같은 경우에 제출한 수 만큼 점수를 깎는 경우도 있다. 따라서 내가 짠 코드의 시간을 미리 측정해 제한 시간에 넉넉하게 통과하는지 보아야 한다. 이를 위해 clock() 함수를 이용한다. c는 , c++은 헤더를 추가하여 사용한다. #include #include using namespace std; int main() {clock_t start = clock(); // 시간을 시작하고자 하는 코드 줄 cout
문제를 풀 때 조건 N이 10억이상이 되는 경우가 많다. 이럴 때 그냥 코드를 짜면 시간제한에 걸리거나 메모리 제한으로 틀리는 경우가 많았다. 아직은 공부를 하는 단계라 이러한 경우 명확한 해답을 내지는 못했다. 그러나 이런 경우 배열보다는 다른 자료구조를 사용해서 풀면 좀 더 효율적이었다. vector, list, queue 등 자료구조들의 특징을 좀 더 공부해서 문제의 특성에 맞는 효율적인 자료구조를 짜는 것이문제해결로 가는 지름길인 것 같다. 이러한 자료구조는 프로그램의 시간, 메모리 등을 좌우하는 굉장히 중요한 요소라는 것을 다시 한번 깨달았다. 작성자 : 히더
알고리즘 문제를 풀다 보면 몇가지 케이스에 대해 틀리는 경우가 있다. 이러한 경우 대부분 전반적인 논리가 틀리지 않았으면특별한 케이스, 조건의 최대 값일 때, 최소 값일 때, 범위 제한 등을 고려해야한다. 대부분의 문제에서 예제 케이스로 주는 경우는 이러한 최악의 경우를 주지는 않는다. 그래서 최악의 경우를 대비해 시간, 메모리 등을 고려해야한다. 이때, 직접 최대 케이스를 만들어서 돌려보는 것이 좋다. 예제 케이스가 맞다고 제출하는 것이 아니라 최악의 경우의 케이스를 직접 만들어 돌려본다. input값을 넣기 힘든 숫자의 경우이면 코드로서 케이스를 만들어 돌려보면 된다. 작성자 : 히더
- Total
- Today
- Yesterday
- DP
- 알고리즘
- 팁
- 17779
- 시간 복잡도
- 17144
- 2018 KAKAO BLIND RECRUITMENT
- 트렌드
- STL
- 새로운 게임 2
- 역량 테스트
- 게리맨더링 2
- 연구소 3
- hackerrank
- 삼성
- 2018 카카오 블라인드 채용
- scanf
- 17837
- boj
- 입출력
- DFS
- 17143
- string
- 이차원 배열과 연산
- 백준
- SW Expert Academy
- 미세먼지 안녕!
- SWEA
- 17142
- 17140
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |