Paradox Simulation

728x90
반응형

1. 언어 선택하기


언어는 그렇게 코테에서 중요한건 아니다.

  1. 변수선언
  2. 함수정의
  3. 컬렉션 자료형
  4. 조건문, 반복문

 

 

2. 문제 분석 연습하기


코딩 테스트는 코딩능력이 아닌 문제풀이 능력을 말한다.

무작정 코드부터 작성보단 문제분석에 시간을 충분히 활용해야함.

전체 시간의 50~60%를 문제해석에 시간을 써야함.

 

 

1. 문제를 쪼개서 분석하기


문제 전체를 한번에 분석보다 문제를 동작 단위로 쪼개서 분석하는 것.

한번에 생각을 줄이면 유연하게 접근가능

 

 

2. 제약 사항을 파악하고 테스트 케이스를 추가


먼저 제약사항을 정리하고, 이를 고려하여 테스트 케이스를 추가하는 연습을 한다.

코드 구현단계에서 예외를 거를 때 도움이 된다.

 

 

3. 입력 값을 분석하라


알고리즘의 시간 복잡도는 입력값이 결정하는 경우가 다수

입력데이터가 100만개라면 O(N^2) 알고리즘으로는 시간내에 출력이 안될것.

구현전에 반드시 입력값을 분석하자

 

 

4. 그리디하게 접근할 때 근거를 명확히


그리디 = 현재 상황에서 가장 유리해 보이는 선택하기

유명한 문제로는 거스름돈 문제가있음

10, 50, 100, 500원 동전이 있고, 750을 거슬러주려면

500원 1개, 100원 2개, 50원 1개

→ 최소 갯수 거스름돈(제일 큰 수부터)

하지만, 돈의 단위가

10, 50, 150, 200 일때 만약 300원을 거슬러 준다면?

200원 1개 50원 2개 → 3개

하지만, 오답이다. 150원 2개면 된다.

이러한 문제는 완전탐색으로 접근해야함.

 

 

5. 데이터의 흐름이나 구성을 파악하기


데이터의 삽입과 삭제가 빈번하게 일어나고, 최댓값 혹은 최솟값을 반복해서 구한다면, 힙 자료 구조를 고려함.

데이터가 50개 미만에 깔끔하게 정리가 어려우면 하드코딩도 고려함.

데이터 값의 차이가 클 경우 인덱스 활용은 피해야함.

{1, 10100, 5000}의 데이터는 2~4999, 5001~10099의 공간을 사용하지 않기에 메모리 낭비임.

 

 

3. 의사 코드로 설계하는 연습하기


의사코드는 프로그램의 논리를 설명하고 알고리즘을 표현하기 위해 작성한 일종의 지침임.

  1. 프로그래밍 언어로 작성금지
  2. 일반인도 이해할 수 있는 자연어로 작성
  3. 일정한 형식이 없음(자유 작성)

실제 구현단계가 아니라 추상 단계에서 설계를 진행하기 어렵기에 설계 아이디어에 좀 더 집중이 가능

 

 

1. 세부 구현이 아닌 동작 중심으로 작성


세부구현을 고민하는 순간 의사코드는 설계가 아니라 구현이 주 목표가 됨.

 

 

2. 문제 해결 순서로 작성


의사코드 자체는 실제 구현할 코드의 주석이 되기도 함.

순서대로 작성하면 나중에 자신의 코드를 분석하기도 편해짐

ex)

  1. 영어 성적 입력
  2. 영어성적이 60점을 넘는지 확인(분기)
    1. 60점 이상이면 통과
    2. 60점 미만이면 실패

 

 

3. 충분히 테스트 하기


구현 단계로 갈수록 잘못된 부분을 수정하는 데 드는 비용이 커짐

미리 생각한 테스트 케이스를 통과할 수 있을지 고민해야함.

 

 

## 리마인드


  1. 제약사항을 잘 파악하고 이를 확인할 수 있는 테스트 케이스를 작성하면 문제 풀이 시간을 크게 단축 시킴
  2. 그리디로 풀어야 할 문제와 완전 탐색으로 풀어야 할 문제를 정확히 구분해야함
  3. 입력값을 분석하면 문제에서 요구하는 알고리즘의 시간 복잡도를 간접적으로 파악할 수 있음.
728x90
반응형
250x250
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band