목록IT/JAVA (18)
개발 공부~
https://www.acmicpc.net/problem/15651 N과 M (2) 문제와 다른 점중복을 허용하고 순서의 변경이 있어도 다른 수열로 구분시작값 항상 1, 깊이만 늘려가며 탐색하면 됨import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.util.*;public class Main { static int n; static int m; static int[] result; static BufferedWriter bw; public static..
https://www.acmicpc.net/problem/15649 1 ~ N 중에서 쓸 수 있는 수는 다 써보면서, 중복 없이 m개의 수열 완성result[depth] ->현재 depth번째 자리에 들어갈 숫자를 저장하는 배열visited[i] == true -> 다시 쓰면 안 된다(중복 방지), 숫자 i는 이미 앞에서 사용됨DFS + 백트레킹깊이: 0 ~ M (M길이 수열)각 깊이에서 시도하는 숫자: 1 ~ N (단, visited로 필터링) throws IOException 를 붙인 이유- bw.write(), bw.newLine(), bw.flush(), bw.close() 모두 메서드 선언에 throws IOException 이 붙어있기 때문이를 호출하는 dfs, main에서도 예외를 직접 처..
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");