good_da22 's devLog

분류 전체보기 108

탐욕 알고리즘(greedy algorithm)

반복(iteration) 과 재귀(recursion) 반복과 재귀는 유사한 작업을 수행 반복은 수행하는 작업이 완료될 때까지 계속 반복, 단위 반복 같은 내용, 같은 작업을 일반화를 통해서 단위 반복 재귀는 주어진 문제의 해를 구하기 위해 동일하면서 더 작은 문제의 해를 이용하는 방법 하나의 큰 문제를 해결할 수 있는(해결하기 쉬운) 더 작은 문제로 쪼개고 결과들을 결합한다. 반복문이 아닌 재귀 함수 구현으로 메소드 호출 재귀 함수(recursive function) 함수 내부에서 직접 혹은 간접적으로 자기 자신을 호출하는 함수 자신을 통해 자신을 정의한다. 일반적으로 재귀적 정의를 이용해서 재귀 함수를 구현 기본 부분(basic part)와 유도 부분(inductive part)로 구성 재귀적 프로그램..

재귀(recursion)

반복(iteration) 과 재귀(recursion) 반복과 재귀는 유사한 작업을 수행 반복은 수행하는 작업이 완료될 때까지 계속 반복, 단위 반복 같은 내용, 같은 작업을 일반화를 통해서 단위 반복 재귀는 주어진 문제의 해를 구하기 위해 동일하면서 더 작은 문제의 해를 이용하는 방법 하나의 큰 문제를 해결할 수 있는(해결하기 쉬운) 더 작은 문제로 쪼개고 결과들을 결합한다. 반복문이 아닌 재귀 함수 구현으로 메소드 호출 재귀 함수(recursive function) 함수 내부에서 직접 혹은 간접적으로 자기 자신을 호출하는 함수 자신을 통해 자신을 정의한다. 일반적으로 재귀적 정의를 이용해서 재귀 함수를 구현 기본 부분(basic part)와 유도 부분(inductive part)로 구성 재귀적 프로그램..

리스트(List)

리스트(List) 순서를 가진 데이터의 집합을 가리키는 추상자료형(abstract data type) 동일한 데이터를 가지고 있어도 상관 없다. 데이터 중복 허용 순서 -> index 관리(offset) 구현 방법에 따라 크게 두 가지로 나뉜다. 순차 리스트 : 배열을 기반으로 구현된 리스트 연결 리스트 : 메모리의 동적할당을 기반으로 구현된 리스트 순차 리스트 구현 방법 1차원 배열에 항목들을 순서대로 저장 데이터의 종류와 구조에 따라 구조화된 자료구조를 만들어 배열에 저장할 수도 있다. 데이터 접근 : 배열의 인덱스를 이용해 원하는 위치의 데이터에 접근할 수 있다. 삽입 연산 : 삽입 위치 다음의 항목들을 뒤로 이동해야 한다. 삭제 연산 : 삭제 위치 다음의 항목들을 앞으로 이동해야 한다. 순차 리스..

표준 입출력 I/O

표준 입출력 System.in System.out System.err 대상 변경 System.setOut() System.setErr() System.setIn() java.util.Scanner 파일, 입력 스트림등에서 데이터를 읽어 구분자로 토큰화 다양한 타입으로 형변환하여 리턴하는 클래스 Scanner(File source) Scanner(InputStream source) Scanner(String source) 입력 스트림을 다루는 방법을 몰라도 쉽게 입력처리 가능 데이터 형변환으로 인한 편리함 대량의 데이터 처리 시 수행시간 비효율적 Scanner 주요 메서드 nextInt() int 타입 반환 유효 문자열 후 White space 문자를 만나면 처리 유효 데이터가 식별이되면 구분자를 만날 때..

SW 문제 해결

SW 문제 해결 프로그래밍을 하기 위한 많은 제약 조건과 요구 사항을 이해, 최선의 방법을 찾아내는 능력 추상적인 기술, 명확히 정의된 실체가 없다. 문제 해결 과정 문제를 읽고 이해 문제를 익숙한 용어로 재정의 해결 계획 수립 계획 검증 프로그램으로 구현 복기 및 개선 방법 탐색 문제 해결 전략 직관과 체계적인 접근 비슷한 문제 해결 경험 단순한 방법에서 시작 문제를 단순화 그림 및 수식으로 표현 문제 분해 뒤에서 접근 특정 형태의 정답만을 고려 알고리즘 성능 정확성 : 얼마나 정확하게 동작하는가 작업량 : 얼마나 적은 연산으로 결과를 만들 수 있는가 메모리 사용량 : 얼마나 적은 메모리를 사용하는가 단순성 : 얼마나 둔순한가 최적성 : 더 이상 개선할 여지없이 최적화되었는가 시간 복잡도 : 연산의 작..

SWEA 1954번 달팽이 숫자

1954번 달팽이 숫자 문제 난이도 D2 풀이 숫자를 대입할 인덱스의 유효성을 확인 인덱스를 순회하며 조건에 따라 방향을 설정 코드 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; // 1954. 달팽이 숫자 D2 // https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PobmqAPoDFAUq public class Solution { public static int[] d..

SEWA 1210번 [S/W 문제해결 기본] 2일차 - Ladder1

1210번 [S/W 문제해결 기본] 2일차 - Ladder1 D4 문제 난이도 D4 풀이 사다리의 도착 지점으로 향하는 출발 지점 찾기 도착 지점은 한 개로 정해져 있기 때문에 도착지점부터 위로 올라가며 출발지점을 찾는다. 갈림길이 나왔을 때 방향을 선택하기 지나온 경로를 확인할 방법이 필요하다. 코드 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.StringTokenizer; // ..

파싱(Parsing)

Parsing 문서에서 필요한 정보를 얻기 위해 태그를 구별하고 내용을 추출하는 과정 전문적인 parser 활용 SAX parser Simple API for XML parser 문서를 읽으면서 태그의 시작, 종료 등 이벤트 기반으로 처리하는 방식 빠르고 한번에 처리하기 때문에 다양한 탐색이 어렵다. DOM parser Document Object Model 문서를 다 읽고 난 후 문서 구조 전체를 자료구조에 저장하여 탐색하는 방식 다양한 탐색이 가능하지만 느리고 무거우며 큰 문서를 처리하기 어렵다. SAX(Simple API for XML) parser 문서를 읽다가 발생하는 이벤트 기반으로 문서 처리 SAX Parser Factory : SAX Parser 생성 SAX Parser : 문서 parsi..

Java 2022.07.31

CSV & XML & json

데이터 형태 CSV comma separated value 용량이 작지만 구조적이지 못하다. XML Extensible markup language 태그를 통해 데이터 형식 정의 구조적, 정확한 문법이 필요, 큰 용량 json JSON(JavaScript Object Notation)을 통해 데이터 형식 정의 구조를 가지며 객체로 다른 언어와 호환 XML Extensible Markup Language Markup Language, 태그 등을 이용하여 문서나 데이터의 구조를 명기하는 언어 필요에 따라서 태그를 확장해서 사용 가능 정확한 문법을 지켜야 동작 : Well formed 문서의 시작은 반드시 root element 가 존재해야 한다. 나머지 태그들은 Tree 형태로 구성 시작 태그와 종료 태그는..

Back-End/etc 2022.07.31

직렬화(Serialization)

객체 직렬화 Serialization 직렬화(serialization) 객체를 데이터 스트림으로 만드는 것 객체를 파일등에 저장하거나 네트워크로 전송하기 위해 연속적인 데이터로 변환하는 것 역 직렬화(deserialization) 직렬화의 반대로 스트림으로부터 데이터를 읽어서 객체를 만드는 것 직렬화 조건 java.io.Serializable 인터페이스를 구현해야 한다. 추가 구현 메서드는 없다 @SuppressWarnings("serial") 경고를 무시할 수 있지만 사용하지 말 것 Serializable를 구현하는 클래스를 상속받는다면, 자식 클래스에서는 Serializable을 구현하지 않아도 된다. 부모 클래스가 Serializable을 구현하지 않은 상태에서 자식 클래스가 Serializable..

Java 2022.07.31