문제 출처 : https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 풀이 ) 객체 간 비교를 가능하게 해주는 Comparable 인터페이스 이용해서 비교해주면 된다. 여기선 사전식 오름차순 정렬이라 Comparable 인터페이스를 사용했지만, String 사전 역순이였을 경우에는 Comparable이 아니라 Comparator를 사용하는 것이 좋을 것이다. 소스코드 ) import java.util.*; class Words impleme..
문제 출처 : https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 풀이 ) 내 블로그 카테고리에 시간복잡도 O(N)을 가진 정렬 풀이법이 있다. 바로 생각났다. 수의 크기보다 N이 크다.거기다가 구해야하는 문제들을 보니 카운팅 정렬 알고리즘으로 풀면 괜찮을 것 같다. import java.util.*; import java.io.*; class Main { // 1 2 4 4 6 -> 0 1 1 0 2 0 1 (cntArr[4] = 2) public String..
m n 이 첫 줄에 주어지면 m이상 n이하 소수 모두 출력하는 간단한 문제 소스코드1의 무게 (메모리, 시간) : 소스코드1 (Scanner 사용과 배열 이용한 출력) : import java.util.*; class Main { public ArrayList solution(int m, int n) { ArrayList answer = new ArrayList(); boolean prime[] = new boolean[n+1]; Arrays.fill(prime, true); prime[0] = prime[1] = false; for(int i=2; i*i
문제출처 : https://www.acmicpc.net/problem/16472 16472번: 고냥이 고양이는 너무 귀엽다. 사람들은 고양이를 너무 귀여워했고, 결국 고양이와 더욱 가까워지고 싶어 고양이와의 소통을 위한 고양이 말 번역기를 발명하기로 했다. 이 번역기는 사람의 언어를 고 www.acmicpc.net 문제 : 소스코드 : import java.util.*; class Main { // 투포인터 알고리즘 + 슬라이딩 윈도우 알고리즘 public int solution(int n, char[] arr) { int lt = 0, dif = 0; int answer = Integer.MIN_VALUE; // 해쉬맵 이용해 현재 인식중인 알파벳과 그 알파벳의 횟수 key와 value값으로 저장 Ha..
문제 출처 : https://www.acmicpc.net/problem/1016 1016번: 제곱 ㄴㄴ 수 어떤 정수 X가 1보다 큰 제곱수로 나누어 떨어지지 않을 때, 그 수를 제곱ㄴㄴ수라고 한다. 제곱수는 정수의 제곱이다. min과 max가 주어지면, min보다 크거나 같고, max보다 작거나 같은 제곱ㄴㄴ수 www.acmicpc.net 문제 : 소스코드 : import java.util.*; class Main { public int solution(long min, long max) { int answer = 0; // min부터 max까지의 배열을 생성한다. long len = (int)(max-min)+1; long arr[] = new long[(int)len]; // 에라토스테네스 체 알고..
문제출처 : https://www.acmicpc.net/problem/1644 1644번: 소수의 연속합 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 4,000,000) www.acmicpc.net 문제 : 소스코드 : import java.util.*; class Main { // 소수를 구해서 소수 배열을 만드는 함수 작성 // 에라토스테네스 체 알고리즘 적용 public ArrayList primeArr(int n) { ArrayList arr = new ArrayList(); boolean[] p = new boolean[n+1]; Arrays.fill(p, true); p[0] = p[1] = false; for(int i=2; i*i
문제출처 : https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 문제 : 소스코드 : import java.util.*; class Main { // 투포인터 알고리즘 + 슬라이딩 윈도우 알고리즘 public int solution(int n, int s, int[] arr) { int lt = 0, sum = 0; int answer = Integer.MAX_VALUE; for(int rt=0; rt= s) { answer = Ma..
https://www.acmicpc.net/problem/1747 1747번: 소수&팰린드롬 어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다. 어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고, www.acmicpc.net 소스코드 : import java.util.*; class Main { public boolean reverseOk(int n) { String str = Integer.toString(n); String reverseStr = new StringBuilder(str).reverse().toString(); if (str.equals(reverseStr)) r..