본문 바로가기

분류 전체보기

(46)
구간 합 구간 합: 합 배열을 이용하여 시간 복잡도를 더 줄이기 위해 사용하는 특수한 목적의 알고리즘 합 배열 S 정의 S[i] = A[0] + A[1] + A[2] + ... + A[i - 1] + A[i] A[0]부터 A[i]까지의 합 합 배열을 미리 구해 놓으면 기존 배열의 일정 범위의 합을 구하는 시간 복잡도가 O(N)에서 O(1)로 감소한다. 합 배열 S를 만드는 공식 S[i] = S[i - 1] + A[i] 구간 합을 구하는 공식 S[j] - S[i - 1] i에서 j까지의 구간 합
배열과 리스트 배열 메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조 배열의 값은 인덱스를 통해 참조할 수 있으며, 선언한 자료형의 값만 저장할 수 있다. 배열의 특징 인덱스를 사용하여 값에 바로 접근할 수 있다. 새로운 값을 삽입하거나 특정 인덱스에 있는 값을 삭제하기 어렵다. 값을 삽입하거나 삭제하려면 해당 인덱스 주변에 있는 값을 이동시키는 과정이 필요하다. 배열의 크기는 선언할 때 지정할 수 있으며, 한 번 선언하면 크기를 늘리거나 줄일 수 없다. 리스트 값과 포인터를 묶은 노드라는 것을 포인터로 연결한 자료구조 리스트의 특징 인덱스가 없으므로 값에 접근하려면 Head 포인트부터 순서대로 접근해야 한다. 다시 말해 값에 접근하는 속도가 느리다. 포인터로 연결되어 있으므로 데이터를 삽입하거나 삭제하는 연산 ..
디버깅 Do it! 알고리즘 코딩 테스트 자바 편 첫째 마당 코딩테스트 준비하기 02 코드의 논리 오류를 어떻게 잡을까? - 가장 뛰어난 오류 탐색 방법, 디버깅 디버깅debugging 프로그램에서 발생하는 문법 오류나 논리 오류를 찾아 바로잡는 과정 디버깅하는 법 코드에서 디버깅하고자 하는 줄에 중단점을 설정한다. 이때 중단점은 여러 개 설정할 수 있다. IDE의 디버깅 기능을 실행하면 코드를 한 줄씩 실행하거나 다음 중단점까지 실행할 수 있으며, 이 과정에서 추적할 변숫값도 지정할 수 있다. 이 방법으로 변숫값이 자신이 의돤 대로 바뀌는지 파악한다. 변숫값 이외에도 원하는 수식을 입력해 논리 오류를 파악할 수도 있다. 코딩 테스트를 진행하며 실수하기 쉬운 논리 오류 1. 변수 초기화 오류 코딩 테스트의 두번..
시간 복잡도 Do it! 알고리즘 코딩 테스트 자바 편 첫째 마당 코딩테스트 준비하기 01 어떤 알고리즘으로 풀어야 할까? - 알고리즘 선택의 기준이 되는 시간 복잡도 시간 복잡도 주어진 문제를 해결하기 위한 연산 횟수. 일반적으로 수행 시간은 1억 번의 연산을 1초의 시간으로 간주하여 예측한다. 시간 복잡도 유형 빅-오메가(Ω(n)): 최선일 때(best case)의 연산 횟수를 나타낸 표기법. 빅-세타(θ(n)): 보통일 때(average case)의 연산 횟수를 나타낸 표기법. 빅-오(O(n)): 최악일 때(worst case)의 연산 횟수를 나타낸 표기법. 각각의 시간 복잡도는 데이터의 크기(N)의 증가에 따라 성능(수행 시간)이 다르다. 아래는 빅-오(O(n)) 치트시트에서의 복잡도 증가 그림 예시다. 코딩..
JavaScript id, class, name으로 value 값 구하기/getElementById() id, class, name을 이용해 value 값을 구해보자. id를 이용해 value 값 구하기 document.getElementById("demoId").value; 모든 ID는 고유해야 한다. 만약 동일한 id를 가진 요소가 둘 이상 존재하면 메소드는 첫 번째 요소를 반환한다. 여러 요소를 선택하고 싶을 때는 태그 이름이나 클래스와 같은 다른 방법을 사용해야 한다. 해당 id를 가진 요소가 존재하지 않는 경우에는 null을 반환한다. class를 이용해 value 값 구하기 document.getElementsByClassName("demoClass")[0].value; class로 value 값을 가져오기 위해서는 배열 인덱스(예: [0])를 필수적으로 넣어야 한다. name을 이용해 valu..
MySQL 휴대폰 번호에 하이픈(-) 삽입/CASE 문법/조건에 따른 결괏값 반환 MySQL에서 휴대폰 번호에 하이픈을 넣는 방법이다. 1. 번호 하나에 하이픈을 넣는 경우 SELECT hp , CASE LENGTH(hp) WHEN 11 THEN CONCAT(LEFT(hp, 3), '-', MID(hp, 4, 4), '-', RIGHT(hp, 4)) WHEN 10 THEN CONCAT(LEFT(hp, 3), '-', MID(hp, 4, 3), '-', RIGHT(hp, 4)) END x FROM (SELECT '01012345678' hp ) a; 2. 테이블 내 모든 번호에 하이픈을 넣는 경우 SELECT PHONE , CASE LENGTH(PHONE) WHEN 11 THEN CONCAT(LEFT(PHONE, 3), '-', MID(PHONE, 4, 4), '-', RIGHT(PHO..