일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
Tags
- 머신러닝
- C/C++
- BFS
- 파이썬
- 스프링 프레임워크
- Python
- 알고리즘
- 벤쿠버
- leetcode
- 라인
- 시애틀
- C++
- Spring Framework
- 라인플러스
- jvm
- Java
- 프로그래머스
- 스타벅스
- 딥러닝
- spring
- 릿코드
- dfs
- 다이나믹프로그래밍
- 백준
- STL
- 모두를 위한 딥러닝
- 프로그래밍언어론
- DP
- 백트래킹
- binary search
Archives
- Today
- Total
케이스윔의 개발 블로그
[TIP] 기억해두면 좋은 C/C++ 알고리즘 풀이팁 본문
사실 팁이라고 하기에는 거창하지만 제가 자료구조, 알고리즘 관련 문제들을 풀다 보며 기억해두면 좋을 것 같은 내용을 기록하고 남겨두는 글입니다. 계속 수정을 통해 업데이트해나가도록 하겠습니다!
- printf("%*d", 출력폭, 변수); 미리 특정 숫자가 아닌 계산하는 결과에 따라 출력하고자 하는 변수의 출력 폭을 지정할 수 있습니다.
- priority_queue 에서는 pop()은 반환값이 없기 때문에 empty()로 잘 체크해줘야 합니다. 체크를 안 해주고 반복문에서 사용할 경우(VS환경에서는 컴파일 시 에러가 나서 확인가능) 백준 온라인 저지와 같은 사이트에서 히든케이스로 존재할 경우 무한루프에 빠지고 시간초과가 납니다. 또한 비어있을 때 top()은 어떤 값을 return 할지 모르기 때문에 우연히 예제케이스를 맞출 수 있으므로 체크를 꼭 해줘야 합니다!
- C++로 풀어도 scanf와 printf를 통해서 입출력해줍니다. 속도가 빠르기 때문에!(너무 당연하지만..) cin이나 cout은 사실 보기만 해도 입력타입을 명시 안 입력해주니까 오래 걸릴 것 같다는 걸 알 수 있습니다. 사실 연습할 때는 cin, cout이 편해서 거의 사용하는데 입출력때문에 시간초과가 나는 경우를 방금 겪어보고 연습할 때도 scanf, printf를 사용하기로*^^* (endl은 버퍼를 비워주는 작업까지 하므로 cout을 사용할 때 endl 대신에 '\n'으로 바꿔주는 걸로도 상당히 시간을 줄일 수 있다고 합니다.)
- string 타입을 printf("%s", str) 해주면 이상하게 출력됩니다.(printf는 C의 표준출력함수인데 C에서는 string을 사용할 수 없습니다.) str.c_str() 을 통해서 string-> char* 변환을 해주면 됩니다.
- string 타입은 위와 마찬가지로 C에서는 string 자료형을 지원하지 않기 때문에 scanf에서도 %s로 입력받을 수 없습니다. string을 입력받을 때는 cin을 사용해야합니다.
- 시간초과가 나지 않도록 구현하기 위해서는 시간을 보고 대략적인 연산횟수를 계산해봅니다. 대략 1초에 간단한 연산을 1억번 정도 가능하다고 가정하고 계산을 해봅니다.
'Algorithm' 카테고리의 다른 글
[백준] 1038번 감소하는 수, 1174번 줄어드는 수 (1) | 2018.11.18 |
---|---|
[백준][구현] 1022번 소용돌이 예쁘게 출력하기 (0) | 2018.11.14 |
[백준] 14502번 연구소 (1) | 2018.04.13 |
[백준] 13460번 구슬 탈출 2 (0) | 2018.04.12 |
[백준] 3190번 뱀 (2) | 2018.04.11 |
Comments