문제 출처 : 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..
문제출처 : 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..
출처 : https://www.acmicpc.net/problem/1032 1032번: 명령 프롬프트 첫째 줄에 파일 이름의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에는 파일 이름이 주어진다. N은 50보다 작거나 같은 자연수이고 파일 이름의 길이는 모두 같고 길이는 최대 50이다. 파일이름은 www.acmicpc.net 소스 코드 import java.util.*; class Main { public String solution(String[] arr, int n) { String answer = ""; if (n == 1) return arr[0]; else { int strLen = arr[0].length(); for(int i=0; i