목록IT/JAVA (16)
개발 공부~
https://www.acmicpc.net/submit/1236 문자 배열보다 숫자가 편해서 X있는걸 1, 없는걸 0으로 바꿔서 이차원 배열에 저장처음 한 줄을 입력받은 후 꼭 줄바꿈을 해줘야한다문제가 요구하는건 결국 X가 없는 행과 열중에 가장 큰 값이다 따라서 행과 열을 이중 for문으로 돌며 1이 없는 행 /열 개수를 세서 조건 연산자를 통해 큰 값을 출력한다import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); ..

1. 무방향 그래프정점만!ab1213243425=> graph[a][b] = 1; graph[a][b]=1; => 인접 행렬2. 방향 그래프 행 - > 열ab1213344225=> graph[a][b] = 1;=> 인접행렬 3. 가중치 방향 그래프ab가중치122134345425255=> graph[a][b] = 가중치;
replaceAll("정규식","대체문자") 문자열 내에서 특정 패턴을 찾아 다른 문자열로 대체하는 데 사용첫 번째 인수는 정규식(Regular Expression), 두 번째 인수는 대체할 문자열 1. . (dot)-> 모든 문자-> 예: "abc".replaceAll(".", "#")는 ###로 변환2. \\d-> 숫자 (0-9)->예: "a1b2c3".replaceAll("\\d", "#")는 a#b#c#로 변환3. \\w-> 알파벳, 숫자 또는 밑줄(_)-> 예: "abc123_".replaceAll("\\w", "#")는 #######로 변환 4. \\s-> 공백 문자(스페이스, 탭 등)-> 예: "a b c".replaceAll("\\s", "")는 abc로 변환 5. []대괄호 안..
Array.sort()원본 배열 자체를 정렬시킨다public static void main(String[] args) { int[] tmp = {4, 2, 3, 1, 5}; int[] sorted = solution(tmp); System.out.println(Arrays.toString(tmp)); //[1,2,3,4,5] System.out.println(Arrays.toString(sorted)); //[1,2,3,4,5] } private static int[] solution(int[] arr){ Arrays.sort(arr); return arr; } clone()을 이용..
String 객체는 Immutable 객체이다 값을 변경할 수 없다String 객체의 값을 변경하는 작업 = 새로운 String 객체를 만들고 값을 복사하는 작업이 수행됨원래 문자열 복사 -> 이후 새로운 값 저장: 여러번의 작업으로 수행시간이 길게 소요됨해결: StringBuffer, StringBuilder(mutable 객체) -> 시간 복잡도 관점에서 효율적=> String 값을 변경하는 연산이 많을때 사용한다 멀티스레드 환경에서의 Thread Safe : 여러 스레드가 동시에 접근하거나 수정할 때도 안전하게 동작하도록 보장된 코드나 데이터 구조-> 즉, 동시성 문제로 인해 데이터 손상이나 예기치 않은 동작이 발생하지 않도록 하는 것 StringBuffer: Thread Safe 존재Strin..
키와 값을 쌍으로 저장하는 해시 테이블로 구현키를 사용하여 값을 검색하는 자료구조 초기화HashMap map = new HashMap(); 데이터 삽입과 출력map.put("apple",1);map.put("banana",2);System.out.println(map); 데이터 검색"apple"문자열과 일치하는 키가 있는지 확인 있으면 출력String key = "apple";if(map.containsKey(key)){ int v = map.get(key); System.out.println(v); //1} 수정키의 값을 바꾸기map.put("banana", 4); 삭제map.remove("banana");

에지 리스트에지 중심인 그래프배열에 출발 노드, 도착 노드 저장 -> 에지 표현혹은 가중치까지 저장하여 표현에지리스트로 가중치 없는 그래프 표현: 출발, 도착 노드만 표시 -> 배열의 행 2개에지리스트로 가중치 있는 그래프 표현: 3번째 행에 가중치 저장 구현하기 쉬움단점: 특정 노드와 관련되어 있는 에지 탐색은 어려움=> 벨만 포트 or 크루스칼 알고리즘에 사용(노드 중심 알고리즘에서는 잘 사용 안함) 인접 행렬2차원 배열의 노드 중으로 그래프 표현인접행렬로 가중치 없는 그래프 표현: 1 -> 2 = 1행 2열에 1을 저장 (가중치가 없으니까 1로 저장)인접행렬로 가중치 있는 그래프 표현: 1 -> 2 가중치 8 = 1행 2열에 8을 저장(가중치 값을 저장) 구현하기 쉬움, 두 노드 연결한 에지의 여..

두 수의 최대 공약수를 구하는 알고리즘 MOD 연산: 두 값을 나눈 나머지를 구하는 연산-예 : 10 MOD 4 = 2 (10 % 4 = 2) 큰 수를 작은 수로 나누는 MOD 연산을 수행과정 1에서의 작은 수와 MOD 연산 결괏값(나머지)으로 MOD 연산을 수행나머지가 0이 되는 순간의 작은수 -> 최대 공약수 확장 유클리드 호제법목적: 방정식의 해 구하기 예) ax +by = cx,y가 정수해를 가지려면 c가 a와 b의 최대 공약수의 배수여야한다.-> c % gcd(a,b) = 0=> 정수해를 갖게 하는 c의 최솟값이 gcd(a,b)이다.