본문 바로가기
알고리즘/알고리즘풀면서...

JAVA 팁(2)

by 두둠칫 2022. 5. 11.

개발은 JAVA, 알고리즘은 C/C++을 했던 사람들을 위해..

 

1. 실제 사용 예시

// 입력(한 줄 단위)
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();

// 공백을 포함한 입력에 활용 ex) 0 10 500 ..
StringTokenizer st = new StringTokenizer(str);
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
..

// 공백 없을 땐 그냥
for(i) int n = Integer.parseInt(str.charAt(i));

// 문자열 양 옆 공백제거
String str = br.readLine().trim();


// 선언 예시
public class Main {
	
    // 구조체
    static class StrEx {
    	int a;
        char b;
        ...
        
        public StrEx(int a, char b, ...){
        	super();
        	this.a = a;
            this.b = b;
            ...
        }
    }
    static class Info {
		int y, x, d, cnt;

		public Info(int y, int x, int d, int cnt) {
			super();
			this.y = y;
			this.x = x;
			this.d = d;
			this.cnt = cnt;
		}
	}
    
    // 전역변수
    static int n, map[][];
    static int[][] map2 = { {..}, {..}, ... };
    static List<Integer> adj[];
    
    static Queue<StrEx> q = new LinkedList<>();
    static Queue<Info> pq = new PriorityQueue<>(new Comparator<Info>() {
		@Override
		public int compare(Info a, Info b) {
			if (a.cnt < b.cnt)
				return -1;
			else if (a.cnt > b.cnt)
				return 1;
			else
				return 0;
		}
	});
    
    // 전역함수
    static boolean cmp() {
		for (int i = 0; i < N - 1; i++) {
			String s1 = num[i], s2 = num[i + 1];

			if (s1.length() < s2.length())
				if (s2.startsWith(s1))
					return false;
		}

		return true;
	}
    
    public static void main(String args[]) throws Exception {
    	/*
        	input
        */
        
        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());
        
        map = new int[n][m];
        
        adj = new List[n + 1];
        for (int i = 1; i <= n; i++)
        	adj[i] = new ArrayList<>();
                
        // queue
        q.offer(new StrEx(1, 'b', ...));
        int a = q.peek().a;
        char b = q.peek().b;
        q.poll();
        // pq.offer(), peek(), poll()
        
        
        // stack
        Stack<Character> s = new Stack<>();
        s.add('a');
        s.peek();
        s.pop();
        
        // 배열관련
        String[] num = new String[10];
        Arrays.sort(num);
        
        List<String> words = new ArrayList<String>();
        
        words.add("abc");
        words.add("zxc");
        
        Collections.sort(words, new Comparator<String>() {
        	@Override
            public int compare(String a, String b) {
            	if (a.length() < b.length())
                	return -1;
                else if (a.length() > b.length())
            		return 1;
                else { // a.length() == b.length()
                	if (a.compareTo(b) < 0)
                    	return -1;
                    else {
                    	return 1;
                    }
                }
            }
        });
        
        
        System.out.println(words.get(0));
        
        
    }

}

 

2. String

- String.valueOf() - 파라미터가 null이면 문자열 "null"을 만들어서 반환한다.

- toString() - 대상 값이 null이면 NPE를 발생시키고 Object에 담긴 값이 String이 아니여도 출력한다.

 

3. Collection(array, List, ArrayList, Arrays.sort, Collection.sort..)

내가 정리한..

 

[JAVA] Collection API

0. API란 다양한 정의가 있겠지만 "프로그램이 제공하는 함수"정도로 넓게 생각하자 1. JAVA의 data 저장 방법 3가지 변수 배열 Collection API - 하나의 data - 기본형&참조형 - 여러 개의 data - 참조형 - 동

dmzld.tistory.com