Skip to content

Latest commit

 

History

History
67 lines (47 loc) · 2.97 KB

220403.md

File metadata and controls

67 lines (47 loc) · 2.97 KB

Goal : 문제를 푸는 '것'이 아닌, 문제를 푸는 '기술'을 연마


How to improve myself?

  1. 문제를 읽고 이해하기 -> 단서를 찾자!
  2. 재정의와 추상화 -> 문제의 본질을 찾자!
  3. 계획 세우기 -> 해결 단계 구체화
  4. 계획 검증하기 -> 오류 검증
  5. 계획 수행하기 -> 실행 단계
  6. 회고하기 -> Review 단계, 자신의 경험을 기록으로 남겨보자.

when I can't solve it

=> 다른 사람의 풀이를 자신의 풀이(해결법)과 대조해 실패원인을 분석하고 이후에 다시 풀어보기.


How to solve problem?

  1. 직관과 체계적인 접근
  2. 체계적인 접근을 위한 질문들.
    1. 비슷한 문제를 풀어본적이 있는가?
    2. 단순한 방법에서 시작할 수 있는가?
    3. 내가 푸는 방법을 수식화 할 수 없을까?
    4. 그림으로 그려볼 수 없을까?
    5. 수식으로 표현할 수 있을까?
    6. 문제를 분해할 수 있을까?
    7. 뒤에서부터 생각해서 문제를 풀 수 있을까?
    8. 순서를 강제할 수 있을까?
    9. 특정 형태의 답만을 고려할 수 있을까?

  • 도입: 코딩의 중요성을 간과하지 말라.

  • 코딩과 디버깅에 관하여(좋은 코드를 짜기 위한 원칙)

  1. 간결한 코드를 작성하기 -> 전역변수를 사용하기(알고리즘 풀이에 관해서만 하자!), 매크로를 사용한 코드 단축가능
  2. 적극적으로 코드 재사용하기 -> 이상적인 세계에세는 한 함수가 두 가지 이상의 일을 해서는 안 된다 말함.
  3. 표준 라이브러리 공부하기, 쓸 수 있는(이미 검증된) 라이브러리를 활용해 문제해결 속도를 높이자!
  4. 항상 같은 형태로 프로그래밍 작성하기(나만의 코딩 양식을 만들어 궂너에 맞춰 작성하는 연습을 하자.)
  5. 일관적이고, 명료한 명명법 사용하기(함수나 변수 이름 작성 시 직관적인 작명을 해 가독성을 높히자.)
  6. 모든 자료를 정규화해서 저장하기, -> 같은 자료를 두 가지 이상의 표현법으로 표현하지 말고, 하나의 기준을 맞춰 사용하자. (deg, protion...)
  7. 코드와 데이터를 분리해 정리하자 -> 가독성을 높히는 가장 쉬운 방법이다.

자주 나오는 실수에 대비

  1. 산술 오버플로 -> 데이터의 사용 위치와 범위에 대해 어느정도 계산하며 코드를 작성하자
  2. 배열 외부 원소에 접근하는 경우, 배열 및 포인터 사용시, 주소의 범위를 자료형에 맞계 계산해 접근하는 습관을 기르자.
  3. 일관되지 않은 범위 표현 방식 사용하기, -> 특히 열린구간과 닫힌 구간의 value 포함 구간에 맞춰 코드를 작성해야함. cpp -> [)

  • 하나 보니 느낀 Tip
    • get() -> 저수준 입력(빠름, 코드 복잡)
    • cin -> 고수준 입력(느림(상대적으로), 코드 간결)