📃 요약
코딩테스트는 IT 회사에 들어가기 위한 보편적인 평가방법이 되고 있습니다.
아직 포트폴리오 및 기술면접으로 치루는 회사도 있으나, 점차 코딩테스트로 서류전형 전/후에 코딩의 기본 기술이 있는지
확인하는 전형으로 많이 채택되고 있습니다.
코딩테스트 연습 사이트의 대표적으로는 백준, 프로그래머스, 코드업 등이 있습니다.
요소 기술은 아래와 같습니다.
요소 기술 :
– 프로젝트 키워드 : 코딩테스트
– 언어 : 자바 & 알고리즘
백준 기초 문제 :
코딩테스트를 위한 기초 문제 : 기본적으로 언어 사용법는 기초 문제 해결능력을 체크하고, 대체로 쉬운문제로 이루어져 있음
백준 등급 : 브론즈 < 실버 < 골드 < 플래티넘 < 다이아 < 루비
( 브론즈 : 제일 쉬움 ~ 루비 : 제일 어려움 )
- IT 회사는 대체로 골드 수준까지의 문제가 골고루 출제됨, 그 이상은 알고리즘 대회 수준이므로 준비할 필요 없음 ( 플래티넘, 다이아 , 루비 )
골드 이상 : 대기업 위주 코딩테스트 문제들, 아주 어려움 예) 카카오, 네이버 등
골드 미만 : 중소기업 , 스타트업 위주 코딩테스트 문제들
📃 기술 구현
스펙 :
- jdk 17 - 알고리즘
백준 기초 문제 : 100문제 (Simple 문제집)
- 주요 알고리즘 종류 : 코딩테스트에서는 주로 구현/시뮬레이션 문제가 자주 등장함
- 구현 : 익히 아는 알고리즘 또는 풀이를 코딩으로 변환하는 것 - 시뮬레이션 : 문제에 지시된 규칙을 토대로 코딩을 하는 것 - 누적합 : 이전 합계를 계속 새로운 값과 더해서 누적시켜 현재합계를 구하는 것
코딩 테스트 풀이를 위한 여러가지 팁 & 유용한 함수들
0) 입출력 :
입력 :
Scanner scanner = new Scanner(System.in); // 키보드 입력 객체 생성
String input = scanner.next(); // 공백/줄바꿈(엔터) 까지의 입력된 1단어 가져오기
int num = scanner.nextInt(); // 공백/줄바꿈(엔터) 까지의 입력된 1숫자 가져오기
long num2 = scanner.nextLong(); // 공백/줄바꿈(엔터) 까지의 입력된 1숫자 가져오기
double num3 = scanner.nextDouble(); // 공백/줄바꿈(엔터) 까지의 입력된 1숫자 가져오기
String line = scanner.nextLine(); // 입력된 1줄 가져오기출력 :
System.out.println("문자열"); // 문자열 출력 , 줄바꿈
System.out.print("문자열"); // 문자열 출력 , 줄바꿈 없음1) 숫자 : 백/십/일의 자리 구해서 응용하기
// 일의자리=> 123을 10으로 나눈 나머지는 3이므로 123%10으로 구할 수 있다 : 123%10
// 십의자리=> 정수형 변수에 123/10을 연산하면 12이므로, 12%10으로 십의 자리를 구할 수 있다. : (123/10)%10
// 백의자리=> 같은 방법으로 123/100의 몫이 1이므로, 백의 자리를 구할 수 있다. : 123/100 의 몫( 정수 : 몫, 소수 : 나머지 )
int one = iSecond%10; // 1의 자리
int ten = iSecond/10%10; // 10의 자리
int hundred = iSecond/100; // 100의 자리2) 누적합 : 반복문과 함께 사용되는 알고리즘
반복문이 실행되는 횟수에 따라 이전 합계와 현재합계가 누적되어 저장되는 알고리즘1 ~ 10까지 최종 누적합 구하기
사용법 : 현재합계 = 이전합계 + 새로운값;
int sum = 0; // 누적합 변수
for(int i=1; i<=10; i++) {
sum = sum + i; // 누적합 코드 (sum 변수의 이전 합계를 계속 더한다.)
}
System.out.println(sum);
- 3) 최대값/최소값/절대값 함수 : ```java Math.max(값, 값2) Math.min(값, 값2) Math.abs(값)
4) 문자열 함수 :
String[] input = 문자열.split("구분값"); // 구분값으로 문자열을 자름, 배열이 됨
String len = 문자열.length(); // 문자열 길이
String str = 문자열.charAt(인덱스번호); // 문자열 인덱스번호에 해당하는 문자 가져오기5) 자료구조 : List/ArrayList, Set/HashSet
// 일반 배열을 사용성이 좋게 만든것
// 배열의 크기가 입력한 만큼 자동으로 증가함
List<Integer> list = new ArrayList<>(); // List 배열
list.add(값); // 배열 값 넣기
list.get(인덱스번호); // 배열 값 가져오기
list.set(인덱스번호, 값); // 배열 값 수정하기
// 집합을 표현한 배열 : 중복된 값이 입력되면 자동으로 제거됨
Set<Integer> set = new HashSet<>(); // Set 집합 배열
set.add(값); // 집합 값 넣기6) 자료구조 조작 객체 : Collections 클래스
- 유용한 함수들을 제공 : 최대값/최소값/정렬 등
Collections.frequency(리스트, 값); // 리스트에 값이 몇개 있는지 세기 함수 Collections.max(리스트); // 리스트에 최대값 함수 Collections.min(리스트); // 리스트에 최소값 함수 Collections.sort(리스트); // 리스트를 오름차순 정렬 Collections.sort(리스트, Collections.reverseOrder()); // 리스트를 내림차순 정렬
- 7) 자료구조 조작 객체 : Arrays 클래스
Arrays.toString(배열); // 1차원 배열을 문자열로 출력 Arrays.deeptoString(배열); // 2차원 배열을 문자열로 출력 Arrays.fill(배열, 채울값); // 채울값으로 배열 초기화 Arrays.sort(배열); // 오름차순 정렬, 퀵정렬 계열 Arrays.sort(chArr, Collections.reverseOrder()); // 내림차순 정렬 List list = new ArrayList(Arrays.asList(배열)); // 배열을 리스트로 변환