본문 바로가기
728x90

알고리즘3

[Java/알고리즘] 자료구조 1. 배열과 리스트 - 배열 : 메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조 1) 인덱스를 사용하여 값에 바로 접근할 수 있다. 2) 새로운 값을 삽입하거나, 특정 인덱스에 있는 값 삭제가 어렵다. (값을 삽입, 삭제하려면 해당 인덱스 주변에 있는 값의 이동이 필요함) 3) 배열의 크기는 선언할 때 지정할 수 있으며, 한번 선언하면 크기를 늘리거나 줄일 수 없다. - 리스트 : 값과 포인터를 묶은 노드라는 것을 포인터로 연결한 자료구조 1) 인덱스가 없음, Head 포인터부터 순서대로 접근해야 한다. (접근 속도가 느림) 2) 포인터로 연결되어 있어 데이터를 삽입하거나 삭제하는 연산 속도가 빠르다. 3) 크기를 별도로 지정하지 않아도 된다. (리스트의 크기는 정해져 있지 않으며, 크기가 변하기.. 2022. 10. 6.
[Java/알고리즘] 디버깅의 중요성 * 디버깅(Debugging) 문법 오류나 논리 오류를 찾아 바로잡는 과정 - 문법 오류 : 컴파일러가 자동으로 찾아 줌 - 논리 오류 : 코드가 사용자의 의도와 다르게 동작. 다양한 형태로 발생함. * 디버깅의 중요성 코딩 테스트에서 index 범위 차이나 자료형 실수 같은 이유로 떨어지곤 한다. 디버깅 알아두는 것뿐만 아니라 반드시 익히고 코딩 테스트에 응시해야 한다. * 디버깅하는 법 1) 코드에서 디버깅하고자 하는 줄에 중단점을 설정한다.(여러 개 설정할 수 있음) 2) IDE의 디버깅 기능을 실행하면 코드를 1줄씩 실행하거나 다음 중단점까지 실행할 수 있으며, 이 과정에서 추적할 변숫값도 지정할 수 있다. (변숫값이 자신이 의도한 대로 바뀌는지 파악) 3) 변숫값 이외에도 원하는 수식을 입력해 .. 2022. 9. 30.
[Java/알고리즘] 알고리즘과 시간 복잡도 / 로직 개선하기 * 알고리즘에서의 시간 복잡도 : 연산 횟수 일반적으로 수행 시간은 1억 번의 연산을 1초의 시간으로 간주하여 예측한다. * 시간 복잡도 유형 빅-오메가(Ω(n)) : 최선일 때의 연산 횟수 표기법(Best case) 빅-세타(Θ(n) : 보통일 때의 연산 횟수 표기법(Average case) 빅-오(O(n)) : 최악일 때의 연산 횟수 표기법(Worst case) * 시간 복잡도 예제 코드 public class timeComplexity{ public static void main(String[] args) { int randNumber = (int)(Math.random() * 100); for(int i = 0; i < 100; i++) { if(i == randNumber) { System.ou.. 2022. 9. 29.
728x90