Loading...
2023. 3. 1. 03:09

자바 초보부터 B형까지6 -함수 작성법 필수-

1. 함수 작성법 별 모양 *을 5번 한줄로 찍어주는 함수를 print5Stars라고 이름짓고 이를 작성할려고 한다면 어떻게 해야할까 public static void print5Stars() { 코드 작성 } 자바의 기본 골격인 main함수가 static으로 정의되어 있어서, 함수 선언시에 반드시 static을 사용해야한다. 또한 함수를 정의하기 위해 자바에서는 반환타입을 반드시 명시해야한다. public static (반환타입) (함수이름)(인자) { 내용 } 의 형태이다. 함수의 반환값이 없다면, void로 반환타입을 명시한다. 자바에서 함수 이름은 소문자로 시작하여, 의미 단위로 단어가 시작될때 대문자로 적는 camelCase를 따른다. 5개의 *을 출력해주는 함수는.. public static ..

2023. 2. 26. 23:43

자바 초보에서 B형까지5 -문자열 필수지식-

1. 공백이 없는 문자열 입력받기 문자열의 타입은 String이고 공백이 없는 문자열은 sc.next()로 입력받을 수 있다. import java.util.Scanner; public class Main { public static void main(String[] args) { // 여기에 코드를 작성해주세요. Scanner sc = new Scanner(System.in); String s = sc.next(); System.out.println(s); System.out.println(s); } } 문자열은 각각 원소에 대한 참조로 charAt(index) 형태로 참조 가능하다. 첫번째 문자를 참조할려면 charAt(0)이다. 그래서 문자 하나를 가지고 올때 sc.next().charAt(0); ..

2023. 2. 24. 03:30

자바 자료구조2 -이중 연결리스트(LinkedList)

1. 단일 연결리스트의 한계 단일 연결리스트는 결국 한방향으로만 이동할 수 있다는 한계점이 있어서 다른 방향으로 탐색하는 것이 불가능하다 때로는 다른 방향으로도 탐색하고 싶을 수 있는데 이런 문제를 해결하기 위해 next를 확장해서 특정 노드의 뒷 노드만 이어주는 것이 아니라, 앞 노드까지 이어질 수 있도록 한다. 2. 이중 연결리스트 단순히 단일 연결리스트에 새로운 노드로 prev를 추가한 것 뿐이다. 이중 연결리스트 역시 단일 연결리스트와 마찬가지로 삽입, 삭제, 탐색이 모두 가능하다. 탐색은 방향성이 양쪽에서 있다고는 하지만 어쨌든 일일이 확인해야하므로 O(N) 하지만 삽입, 삭제의 경우 해당하는 위치를 알고있다면 그냥 선을 끊고 연결해주는 작업만 하면 되므로 O(1) 이때 이중연결리스트는 한방향이..

2023. 2. 24. 03:26

핵심 자료구조 기본인 단일 연결리스트(linked list) 개념파악하기

1. 연결리스트(linked list) 배열의 시간복잡도는 삽입과 삭제가 O(N)이다. 삽입과 삭제가 자주 일어나는 상황에 배열에 들어있는 원소의 수가 매우 많다면 단순한 배열은 비효율적이다. 이런 문제를 해결하기 위해 등장한 자료구조가 연결리스트(linked list) 연결리스트는 탐색은 느리지만(O(N)) 삽입과 삭제 연산이 매우 빠르다(O(1)) 따라서 삽입과 삭제가 잦은 경우에 연결리스트를 이용하면 효과적으로 문제를 해결할 수 있다. 2. 노드(node) 노드는 데이터를 담는 곳이다. 연결리스트는 여러개의 노드들의 모임이다. 연결리스트에서 하나의 노드는 데이터와 다른 노드로 이동하는 경로를 갖는다. 노드를 정의하는 방법에 따라 앞 뒤로 이동할 수 있다. 3. 단일 연결리스트 단일 연결리스트는 연결..

2023. 2. 23. 02:14

자바 자료구조1 -동적배열(ArrayList)

1. 정적 배열 자바에서 배열을 선언하기 위해 다음과 같이 선언한다. //길이 100인 정수형 배열 int[] array = new int[100]; 이렇게 선언한 배열을 정적 배열이라고 부른다. 정적 배열은 배열의 선언과 동시에 크기를 정해주어야하고, 이후 크기를 변경할 수는 없다. 변경하는 방법이야 있겠지만.. 그 방법이 쉽지는 않다 2. 동적 배열 자주 길이가 바뀌는 경우, 정적 배열을 사용하고 싶다면, 길이를 아주 충분히 큰 배열로 선언한다면 가능할지도 모른다. 하지만 너무 많은 메모리를 낭비하는 것일 수도 있다. 이를 해결하기 위해 나온 것이 동적 배열 동적 배열은 자유롭게 길이가 줄어들고 늘어날 수 있다. 정확히 사용하고 싶은 만큼만 공간메모리를 차지하여 사용하는 방식이다. 삽입, 삭제, 탐색..

자바 초보에서 알고리즘 B형까지 도전기4 -배열 필수지식1-

1. 한줄에 여러개의 수가 있을 때 입력 받기 한 줄에 공백을 두고 10개의 수가 있다면, 반복문으로 sc.nextInt();를 10번 반복해서 받을 수 있을 것이다. 그런데 어딘가에 10개의 수를 모두 저장해두지 않으면, 나중에 다시 활용할 수 없을 것이다. 그러면 결국 10개의 수를 저장할려면 10개의 변수를 써야하는데.. int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10; a1 = sc.nextInt(); a2 = sc.nextInt(); ... a10 = sc.nextInt(); 10개야 뭐 어떻게 쓰더라도 100개, 1000개,... 면 언제 다 쓸까? 이럴 때 배열을 이용하면 쉽게 받을 수 있다. 정수형 배열은 다음과 같이 선언 가능하다. //길이가 3인 정수형 배..