JAVA 알고리즘 && 메서드

변수 한번에 이름 바꾸기
ALT + SHIFT + R

숫자 뒤집기 알고리즘

while(tmp > 0) {
	int tmp = num;
	tmp = tmp % 10;
	res = res * 10 + tmp;
	rmp = tmp / 10;
}

최댓값 메서드

Math.max(answer, num);

숫자인지, 알파벳인지 확인

Character.isDigit(x); // 숫자인지
Character.isAlphabetic(x); // 알파벳인지

대/소문자 확인 대문자 범위 : 65 ~ 90 / 소문자 범위: 97 ~ 122 => (char)(소문자 - 32) = 대문자

Character.isLowerCase(x); // 소문자면 true 반환 대문자면 false 반환
Character.isUpperCase(x); // 반대

대/소문자로 통일 (소문자는 toLowerCase())

str = str.toUpperCase(); // 문자열 전체 대문자로 
t = Character.toUpperCase(t); // 문자를 대문자로

문자열 뒤집기(StringBuilder, reverse())

String tmp = new StringBuilder(문자열).reverse().toString();
// 직접 구현
for(String x : str) {
	char[] s = x.toCharArray();
    int lt = 0, rt = x.length()-1;
    while(lt < rt) {
    	char tmp = s[lt];
        s[lt] = s[rt];
        s[rt] = tmp;
        lt++;
        rt--;
    }
    String tmp = String.valueOf(s);
}

배열

int[] tmp = arr.clone();// arr에는 영향을 주지 않는 배열 생성
Arrays.sort(tmp);// 배열 오름차순 정렬
int lt = Arrays.stream(arr).max().getAsInt(); // 최대값 리턴
int rt = Arrays.stream(arr).sum(); // 배열 전체 원소의 합 리턴

문자(숫자)를 int형 숫자로 바꾸기

'0' => 48이기 때문에
'3' - 48을 하면 int형 3이 된다.

ArrayList<>

Collections.sort(sort); // 오름차순 정렬
Collections.reverse(sort); // 내림차순 정렬

HashMap: (key, value), key값 중복 X, value값 중복 O

HashMap<Character, Integer> map = new HashMap<Character, Integer>();
for(char x : str.toCharArray()) {
	map.put(x, map.getOrDefault(x, 0)+1); // map에 key값으로 x가 없으면 기본값 0으로 초기화하고 +1
    						// 값이 있다면 그 값에서 +1
}
int max = Integer.MIN_VALUE;
for(char key : map.keySet()) { // map의 key 탐색
	if(map.get(key) > max) {
		max = map.get(key);
		answer = key;
	}
}
map.containsKey('F'); // true, false 반환
map.size(); // key 갯수 반환
map.remove('A'); // key A 삭제
map.clear(); // key 전체삭제
map.equals(비교할 map); // true, false 반환

TreeSet: 중복제거, 내림차순, 오름차순 정렬

TreeSet<Integer> Tset = new TreeSet<Integer>(Collections.reverseOrder()); // 오름차순
TreeSet<Integer> Tset = new TreeSet<Integer>(); // 기본: 내림차순
Tset.add(arr[i] + arr[j] + arr[l]); // 값 추가하기
Tset.remove(143); //특정 값 제거
Tset.size(); // 전체 길이 반환
Tset.first(), last() // 맨 앞, 맨 뒤(최대최소)

Stack (Vector)

Stack<Character> stack = new Stack<Character>(); // Char형 스택 선언
stack.push(x); // 값 넣기 // 넣은 값 반환
stack.pop(); // 값 빼기 // 뺀 값 반환
stack.peek(); // 값을 빼지 않고 최상위 값을 반환
stack.isEmpty(); // 남아있는 요소 확인, true, false 반환
stack.size(); // 스택 길이 반환
stack.get(i); // 스택 배열 인덱스기준 값 반환
for(char x : stack) sout(x); // forEach 사용가능

Queue

Queue<Integer> Q = new LinkedList<Integer>();// 선언
for(int i = 1; i <= n; i++) Q.offer(i);// Queue객체에 값 추가하기 FIFO
Q.isEmpty(); // Queue가 비었는지 확인 true, false 반환
Q.offer(Q.poll()); // 값을 제거한 값을 리턴하고 다시 가장 뒤에 추가하기
Q.size(); // Queue의 사이즈 리턴
// 객체 만들어서 Queue에 넣기
Queue<Person> Q = new LinkedList<Person>();
		for (int i = 0; i < n; i++) {
			Q.offer(new Person(i, arr[i]));
		}

좋은 웹페이지 즐겨찾기