본문 바로가기

백준 알고리즘(Java)

1874번) 수열 import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = Integer.parseInt(scanner.next()); int[] arr = new int[n]; Stack stack = new Stack(); StringBuilder result = new StringBuilder(); for (int i = 0; i < n; i ++) arr[i] = Integer.parseInt(scanner.next()); int j = 0; for (int i = 0; i < n; i++) { stack.add(i + 1); result...
9012번) 괄호 인텔리j 때문인지, 맥북 때문인지자동으로 소스가 보기좋게 복사되네요. 입력받은 괄호들을 하나씩 쪼개서'('일 경우 stack에 무조건 넣고, '('일 경우 체크를 했습니다. import java.util.Scanner; import java.util.Stack; public class Main { public static void main(String args[]) { Scanner scanner = new Scanner(System.in); int t = Integer.parseInt(scanner.nextLine()); for (int i = 0; i < t; i++) { String insert = scanner.nextLine(); System.out.println(chkVps(insert)); ..
1929번) 소수 구하기 문제가 너무 쉽다 했습니다. 앞서와 같이 해결할 경우, 이중 for문의 경우의 수가 기하급수적으로 증가해 시간 초과가 나게 됩니다. '에라토스테네스의 체'에 대한사전 지식이 필요한데,, 숫자 하나하나에 대해 1~해당 숫자까지 모두 나누어보는 것이 아니라 말 그대로 체로 거르듯이 소수가 아닌 수들을 빼 줍니다. 따라서 2의 배수, 3의 배수, ..... 을 제거해줌으로써 경우의 수를 기하급수적으로 줄여줄 수 있습니다. 저는 위 이론을 직관적으로 적용해 해당 범위만큼 배열을 만들어 모든 수들을 소수라고 가정한 후, 각 배수들을 체로 걸러주었습니다.
10828번) 스택 시간낭비를 많이 한 문제입니다. 이유는.. 스캐너의 nextInt() 메서드를 사용하면 엔터를 칠때 발생하는 개행문자(\r\n)가 버퍼에 그대로 남아있어서.. 바로 다음에 nextLine() 함수를 사용하면 하나를 건너뛰어버려서 꼬이게 됩니다. int N = Integer.parseInt(scanner.nextLine()); 처럼 먼저 nextLine()으로 입력받아 개행문자를 처리한 뒤 Int형으로 변환시켜주시면 됩니다. 앞으로 이렇게 사용하는 것이 좋을 것 같네요. 아래는 코드입니다.
1978번) 소수 찾기 각 수마다 while(해당 수 - 1)문으로 약수가 2개가 아닐 경우에만, 결과++ 해주었습니다. 1은 소수가 아니기 때문에 그 외의 수만 검사하였습니다.
1181번) 단어 정렬 이 문제의 핵심은 1. HashSet은 중복을 허용하지 않는다. 2. Arrays 인터페이스의 sort() 메소드를 활용 2-1. 알파벳순 정렬 2-2. 두번째 매개변수로 Comparator의 익명 객체를 구현해 단어 길이별 정렬 아래는 코드입니다.
1427번) 소트인사이드 삽입정렬을 사용해 해결했습니다. (참고: 2750번) 수 정렬하기)
2750번) 수 정렬하기 정보처리기사 취득할 때 공부한 내용입니다. 버블 정렬, 선택 정렬,,, 등 많은 정렬 알고리즘이 있는데 저는 그 중, 제일 직관적인 느낌이 드는 '삽입 정렬'을 사용해 해결했습니다. 삽입 정렬에서 포인트는, 1. 기준이 되는 수를 for문의 지역변수에 저장해 놓는다. 2. while문으로 하나씩 앞으로 가며, 크기를 비교한다. ---> 조건을 만족한다면 계속 그 수를 오른쪽으로 한칸씩 밀어넣는다. (이때 그 자리에 한칸이 계속 비는데 이는 while이 끝나면 위에서 저장한 기준을 넣어줍니다.) 예제의 정렬 과정을 풀어보면 이렇습니다. 아래는 코드입니다.