본문 바로가기

반응형

Programming

(148)
프로그램과 소프트웨어 소프트웨어 공학 : 소프트웨어를 어떻게 잘 개발할 것인가? 자료구조와 알고리즘 프로그램을 어떻게 잘 개발할 것인가? 문제가 있으면, 처리방식과 대상으로 나누는데, 방식은 알고리즘, 대상은 자료로 분류하여 통합하고 프로그램으로 만든다. 프로그램은 프로그래밍 언어로 만들어지는데, 컴파일하고 cpu로 계산하고 메모리에 저장한 뒤 해답을 낸다. 자료구조 : 데이터를 어떻게 저장할 것인가 알고리즘, : 데이터를 어떻게 처리할 것인가. 자료구조의 정의 문제해결을 위해 데이터 값들을 알고리즘들이 효율적으로 접근하여 처리할 수 있도록 체계적으로 조직하여 표현하는 것. - 데이터란 무엇인가? - 데이터는 어떤 방식으로 컴퓨터에 표현되는가? - 데이터를 어떤 방식으로 처리하는 것이 보다 효율적인가? 알고리즘의 정의 특정 ..
브루트포스 알고리즘 = 전체 탐색 기법 브루트포스(brute force) 무식하게 모든 가능한 경우의 수를 탐색하면서 요구 조건에 충족되는 결과를 가져오는 알고리즘이다. 좋은 점은 100%의 확률로 정답만을 출력할 수 있다. - 알고리즘 설계의 가장 기본적인 접근 방법은 해가 존재할 것으로 예상할 수 있는 모든 영역을 전체 탐색한다. - 선형 전체를 탐색하는 순차 탐색 - 비선형 구조를 전체적으로 탐색하는 깊이 우선 탐색과 너비 우선 탐색이 가장 기본적인 도구다. 알고리즘 구성방법 주어진 문제를 선형 구조로 구조화한다. 구조화된 문제공간을 적절한 방법으로 해를 구성할 때까지 탐색한다. 구성된 해를 정리한다. 10의 약수의 합을 구하기 package bruteforce; import java.util.Scanner; public class Di..
Java Strings Tutorial package String; public class Main { public static void main(String[] args) { // two ways of initializing String String myString = new String("i love java"); String myString2 = "i love java"; if(myString.equals(myString2)) { System.out.println("strings are equal"); } System.out.println(myString.length()); System.out.println(myString.charAt(5)); System.out.println(myString.indexOf('o')); String st..
ASCII(아스키 코드)란? 아스키란 미국 국립 표준 협회에서 표준화한 정보교환용 7비트 부호체계이다. 인간이 입력한 문자를 컴퓨터가 이용할 수 있는 신호로 바꾸어주는 것을 인코딩이라고 한다. 복잡한 신호를 0과 1이라는 디지털 신호로 변환하는 과정이다. 하지만 아스키는 2바이트 이상의 다양한 코드들을 표현할 수 없어서 현대에는 유니코드를 더 많이 사용한다.
Java Regression problem I was trying to solve a regression problem from baekjoon algorithm., I was a little lazy studying these days, not because I am already good at it, but I met many people. I met two geniuses who are naturally smart enough to get the first status in their career. They were both younger than me but achieved so many competitive skills and philosophical thoughts. Even though they were younger, I calle..
List data structure 배열과 리스트의 차이 Array와 List는 상당히 비슷하지만, Array보다 List의 기능이 좀 더 많다고 할 수 있다. 어레이는 인덱스가 중요하다. 리스트는 데이터의 저장 순서가 더욱 중요하다. 데이터의 추가 원본 데이터에서 3번 인덱스에 50이라는 데이터를 추가하게 되면, 배열의 경우는 정해진 사이즈가 있기 때문에 40이라는 데이터가 대체되어버리지만, 리스트의 경우는 새롭게 데이터가 추가가 되고, 기존의 인덱스3의 데이터는 뒤로 밀려나게 된다. 데이터의 삭제 마찬가지로 배열의 경우는 정해진 공간이 있기 때문에 데이터는 사라지더라도 인덱스는 유지가 되지만, 리스트의 경우는 인덱스와 함께 데이터가 사라진다. 데이터 구조의 본질 데이터구조의 기능과 동작방법을 아는 것이다. 리스트의 기능 처음, 끝, 중..
Linked List linked list는 자료구조 중 하나인데, 저장할 수 있는 공간이 있으면, 다음 데이터 공간 주소를 함께 가지고 있는 구조이다. 배열과의 차이 배열은 정해진 공간이 있어서, 작업 중에 공간을 늘리거나 줄일 수가 없다. 그에 반해 linked list는 더하거나 빼는 것이 가능한데, 데이터 안에 그 위치 정보를 주는 것이다. 그런데 여기에서 새롭게 추가가 되었던 노드 정보를 끊고 다음 데이터로 연결을 시키게 되면, 아까 추가되었던 데이터를 부를 수 있는 방법이 사라졌기 때문에 사라진 것처럼 보이지만, 실제로는 메모리를 잡아먹고 있는 상태이다. C++과 같은 언어에서는 저 메모리를 삭제하겠다고 실제로 선언을 해줘야만 데이터가 사라지지만, 자바에서는 이러한 경우 자동적으로 삭제가 된다. 속도적으로는 데이터..
퀵 정렬 자바 퀵 정렬이라는 것은 작은 것은 왼쪽으로 큰 것은 오른쪽으로 분류를 하는 기법이다. 이렇게 두 개로 나눈 것을 파티션이라고 하는데, 파티션 안에서 또 파티션으로 쪼개면서 같은 기능을 반복하므로써 최종적으로 가장 작은 것부터 큰 것까지 정렬을 하게 된다. 퀵 정렬의 시간 복잡도는 O(n log n)으로 평균적으로 시간이 이 정도가 나온다는 뜻이다. 보통은 이것보다 빠르지만, 최악의 경우는 n2까지 나오기도 한다.

반응형