good_da22 's devLog

Coding Test 41

탐욕 알고리즘(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; // ..

백준 1931번 회의실 배정

1931번 회의실 배정 문제 난이도 Silver 1 알고리즘 분류 그리디 알고리즘 정렬 풀이 회의실 배정 문제는 가장 빨리 끝나는 회의를 우선적으로 배정해야한다. 2차원 배열에서 원하는 기준으로 정렬을 하기 위해 compare 메서드 사용 코드 public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringTokenizer st = new StringTo..