C# 종합 문법 5 - 4 : 문제 해결 전략과 실전 연습

김정환·2024년 9월 25일
0

문제해결 전략

  1. 문제 이해
    문제를 꼼꼼히 읽고 정확히 이해하기.
    문제에서 제시한 방법을 이해.
  2. 예제와 테스트 케이스 검토
    어떤 제약이나 조건을 갖고 있는지 확인.
  3. 알고리즘 설계
    어떤 알고리즘을 적용해볼지 생각.
  4. 코드 작성
    당장의 문제해결 방법을 떠오른 그대로 작성하고 다듬어 가기.
  5. 디버그와 테스트
    반드시 디버깅과 테스트로 코드를 확인해보기
  6. 시간 관리
    코딩테스트는 제한시간 안에 문제를 푸는 것이므로, 시간을 효과적으로 사용하는 연습 필요
  7. 연습과 경험

실전 연습 문제

  1. 백준 온라인 저지 (https://www.acmicpc.net/)
  2. 프로그래머스 (https://programmers.co.kr/)
  3. 바킹독 (https://blog.encrypted.gg/): 알고리즘 강의 다수 제공하고 있습니다.
  4. LeetCode (https://leetcode.com/) 해외 사이트

코딩 테스트나 알고리즘 문제의 종류

  1. 탐색과 정렬: 특정한 데이터를 찾거나 정렬하는 문제.
    선형 탐색, 이진 탐색, 퀵 정렬, 병합 정렬 등의 알고리즘이 주로 활용됩니다.
  2. 그래프: 그래프 구조를 활용하여 문제를 해결하는 문제입니다.
    최단 경로, 신장 트리, 네트워크 연결 등의 문제가 있을 수 있으며, 대표적인 알고리즘으로는 DFS, BFS, Dijkstra, 크루스칼, 프림 등이 있습니다.
  3. 동적 프로그래밍: 큰 문제를 작은 하위 문제로 분할하여 해결하는 동적 프로그래밍 알고리즘을 활용하는 문제입니다.
    피보나치 수열, 최장 공통 부분 수열, 0-1 배낭 문제 등이 있습니다.
  4. 그리디 알고리즘: 각 단계에서 가장 최적인 선택을 하는 알고리즘으로, 지역적 최적해를 찾는 문제입니다.
    거스름돈 문제, 회의실 배정, 작업 스케줄링 등이 있습니다.
  5. 분할 정복: 문제를 작은 부분으로 분할하여 해결하는 분할 정복 알고리즘을 사용하는 문제입니다.
    퀵 정렬, 병합 정렬, 이진 탐색 등이 있습니다.
  6. 동적 그래프: 그래프 구조에서 동적인 변화를 다루는 문제입니다.
    플로이드-와샬 알고리즘, 벨만-포드 알고리즘 등이 있습니다.
  7. 문자열 처리: 문자열에 대한 다양한 처리를 다루는 문제입니다.
    문자열 압축, 회문 판별, 문자열 매칭 등이 있을 수 있습니다.
  8. 기타: 그 외에도 수학적인 문제, 비트 연산 문제, 시뮬레이션 문제, 동적 계획법과 그래프의 결합 문제 등 다양한 유형의 문제가 출제될 수 있습니다.
profile
만성피로 개발자

0개의 댓글