코딩테스트 6

📑 코딩테스트 필수 수학 개념

1. 나머지 연산(Modulo Operation)나눗셈의 나머지를 구하는 연산. 표기는 mod로 하고 프로그래밍 언어에서는 대부분 %연산자로 사용한다. 나머지 연산의 경우 아래와 같이 분배법칙이 가능한데 사칙 연산 중 나눗셈 연산을 제외하고 적용된다.(A+B)%C = (A%C + B%C)%C(A-B)%C = (A%C - B%C)%C(A*B)%C = (A%C * B%C)%C더보기/** * 나머지 연산 */public static void modulo() { System.out.println(" 5 % 3 = " + 5 % 3); System.out.println("10 % 3 = " + 10 % 3); System.out.println("10 % 2 = " + 10 % 2); int ..

📑 코딩테스트 필수 자료구조

파이썬 VS 자바 1. 배열 (시간 복잡도) => O(1) 입력값의 크기와 무관하게 일정한 속도, O(c) => 상수 시간만큼의 복잡도언어 구분파이썬자바정의다양한 데이터 타입의 원소들이 순서대로 저장된 선형 자료 구조동일한 데이터 타입의 원소들이 순서대로 저장된 선형 자료 구조 (Primitive / Wrapper)선언list = []int [] arr = new int[]; ArrayList aList = new ArrayList();추가list.append(값) O(1)arr[idx] = 값;aList.add(값); O(n) : 배열이 꽉찬 경우 확장 및 복사삭제list.pop(idx) O(n) list.pop() 맨 뒤의 원소 삭제 O(1)arr[idx] = 0;aList.remove(idx or ..

📑 Do it! 코딩테스트-기초편. 3_자료구조2

오늘은 자료구조 편 문제 풀이 2번째 시간이다. https://www.acmicpc.net/problem/1546 1546번: 평균 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보 www.acmicpc.net 문제를 읽어보고 시간 복잡도 -> 분석 -> 텍스트 코딩 -> 실제 코딩 순서로 진행해 보자 1. 시간 복잡도 해당 문제의 시간 제한은 2초이기 때문에 2억 번의 연산 안에 마무리하면 된다. 문제에서 제시되는 데이터의 크기가 1000개 이하이기 때문에 일반적인 연산을 통해서도 시간제한 나오기는 쉽지 않을 것이다. 2. 분석 최고점을 구한 후에 ..

📑 알고리즘 선택의 기준_시간복잡도

취업 준비기간에 알고리즘 학습용 책을 구매했었는데, 문제풀이 참고용으로만 사용하여 "진짜" 학습을 하지는 못한 것 같아서 다시 천천히 공부해보려 한다. 목표는 매일 한 챕터씩 학습하고 정리하는 것이다. 취업 이후 실무에서 작업을 하는 도중 마주치는 문제는 항상 단연코 '좀 더 빠르게', '메모리를 좀 더 효율적으로'일 것 같다. 나름 알고리즘을 열심히 풀어서 좀 한다고 생각했지만,,, 원리를 모르고 문제를 풀이하는 방법만 공부해왔던 것 같아서 다시 제대로 정리해보려 한다. 알고리즘에서 시간 복잡도는 주어진 문제를 해결하기 위한 연산 횟수를 말한다.모든 개발자들이 바라는 효율적인 알고리즘이란 쉽게 말하면 입력값이 커짐에 따라 증가하는 연산 시간의 비율을 최소화하는 것이다. 일반적으로 수행시간은 1억 번의 ..

📑 조합 Combination

오늘은 코딩테스트에 자주 등장하는 기본 개념으로 조합을 알아보자. 사실 조합으로만 푸는 문제가 나오진 않지만, 가장 빈출되는 동적 계획법을 풀이하기 위해선 조합에 대한 이해를 기반으로 점화식을 도출하는 연습은 필수라고 할 수 있다. 조합과 대비되는 개념으로는 순열이 있는데 이는 가볍게 개념만 인지하고 넘어가자 - 조합 : nCr = n!/(n-r)! -> n개의 수 중에서 r개의 수를 순서를 고려하여 나열할 경우의 수 - 순열 : nPr - n!/(n-r)!r! -> n개의 수 중에서 r개의 수를 순서를 고려하지 않고 뽑는 경우의 수 알고리즘에서는 위의 수학적 점화식을 코드ㄹ화하지 않고 점화식을 사용해 표현한다. 1. 특정 문제를 가정하기 먼저 가벼운 조합 문제를 가정해보자. 5개의 데이터에서 3개를 선..

📑 2020 카카오 인턴쉽 [키패드 누르기] Lv.1

문제 설명 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다. 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다. 왼쪽 열의 3개의 숫자 1, 4, 7을 입력할 때는 왼손 엄지손가락을 사용합니다. 오른쪽 열의 3개의 숫자 3, 6, 9를 입력할 때는 오른손 엄지손가락을 사용합니다. 가운데 열의 4개의 숫자 2, 5, 8, 0을 입력할 때는 두 엄지손가락의 현재 키패드의 위치에서 더 가까운 엄지손가락을 사용합니다. 4-1..