* String변수(String str)에 특정 문자(char ch)의 개수 구하는 메소드 //str ="abcd", ch='a' 일때 return 1;
static int countChar(String str, char ch) {
return str.length() - str.replace(String.valueOf(ch), "").length();
}
* 배열 복사 start 부터 end 까지
int[] a = Arrays.copyOfRange(array, start, end);
//보통은 start값을 서수로 입력 받기때문에, index값과 일치시키려면 start-1 필요함 [0] 인덱스부터 시작
* <String 문자열> 스플릿 int 배열로 입력
- 자바로 특정 문제를 풀다보면 숫자를 입력 받아야하는데도 불구하고,
연산속도 때문에 Scanner 사용이 불가할때가 있다. 거기다 각각 배열에 넣어야할경우.
이럴때는 BufferReader로 입력 받아서 split으로 아래와같이 한다.
ex ) "111" 같은 경우는 .split("") // 1글자 단위로 쪼개어 배열이 넣는다.
ex ) "1 1 1" 같은 경우는 .split(" ") // 공백단위로 쪼개어 배열이 넣는다.
BufferReader br = new BufferReader(new InputStreamReader(System.in));
int[] arr = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
* 스트링 문자열 ',' 로 구분 int Array
String str = "[1, 2, 3, 4, 5]";
위와 같이 toString 같은 형태인데 변수에 들어가있을때 substring으로 '[' , ']' 를 제거후
숫자값만 int타입 배열에 입력한다.
int[] arr = Arrays.stream(str.substring(1, str.length() - 1).split(",")).map(String::trim).mapToInt(Integer::parseInt).toArray();
* Map , HashMap, TreeMap 등 key값 출력, value값 출력
Map<String, Integer> map = new HashMap<String, Integer>();
//선언됨
Set<String> keySet = map.keySet();
Iterator<String> keyIterator = keySet.iterator();
while(keyIterator.hasNext()) {
String key = keyIterator.next(); // Iterator 반복 이용하여 key값 얻어옴
Integer value = map.get(key); // map의 get 메소드로 value값 가져옴
System.out.println("\n"+ key + " : " + value); 출력!
위와 같이 Map<Generic> map = new HashMap<>(); 으로 선언 하는방식은 Map은 인터페이스라
HashMap과 같이 자식 객체로 생성하여 메소드를 상속한다.
물론 HashMap<Generic> map = new HashMap<>(); 이것도 선언가능(List 도 마찬가지)
자바는 처리속도가 110~120정도부터 시작이라 map, bufferreader를 즐겨사용한다 특히 hashmap같은경우는
메모리 내에 key값으로만 구분한다. index가없으니 정렬이 되어있는상태도 아니다.
하지만 key으로만 연산하니 key을 넣어 value값만 반환하는 알고리즘 계산 경우에는 처리속도에 더 용이한경우가 있다.
'💡 Algorithm' 카테고리의 다른 글
[자바/알고리즘] - 문장 속 가장 긴 단어 출력 (0) | 2022.03.25 |
---|---|
알고리즘 - 대소문자 변환 (0) | 2022.03.25 |
[Algorith/알고리즘] 백준 1193 - 분수찾기 (0) | 2021.09.03 |