본문 바로가기

분류 전체보기

(263)
[백준] 1181 : 단어 정렬 JAVA 풀이 1. 단어의 개수 N을 입력받는다. 2. N개의 단어를 입력받고, 그 단어가 처음 입력된 것이라면 ArrayList에 추가한다. -> 처음엔 일반 배열을 생성하고, 처음 입력된 단어일 때만 배열에 저장하려고 했다. 그러나 for문으로 하다보니 배열의 중간이 비는 상황이 발생해서 ArrayList로 변경했다. 3. 길이가 짧은 순으로 정렬하고 길이가 같으면 사전 순으로 정렬한다. import java.io.IOException; import java.io.InputStreamReader; import java.io.BufferedReader; import java.util.ArrayList; public class Main{ public static void main(String[] args)throws ..
[백준] 11651 : 좌표 정렬하기 2 JAVA 풀이 이전 문제에서 x와 y만 바뀐 문제다. y값을 기준으로 정렬하되 y값이 같다면 w값의 오름차순으로 정렬하면 된다. import java.io.IOException; import java.io.InputStreamReader; import java.io.BufferedReader; import java.util.StringTokenizer; import java.util.Arrays; public class Main{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.re..
[백준] 11650 : 좌표 정렬하기 JAVA 풀이 1.점의 개수 N을 입력받는다. 2. x좌표와 y좌표를 저장할 2차원 배열 arr[N][2]를 생성한다. 3. x좌표와 y좌표를 입력받아 배열에 저장한다. 4. x좌표의 오름차순으로 배열을 정렬하는데 x좌표가 같을 때는 y좌표의 오름차순으로 정렬한다. import java.io.IOException; import java.io.InputStreamReader; import java.io.BufferedReader; import java.util.StringTokenizer; import java.util.Arrays; public class Main{ public static void main(String[] args) throws IOException { BufferedReader br = new Bu..
[백준] 1427 : 소트인사이드 JAVA 풀이 이번 문제는 아주 간단했다!! 1. N을 입력받는다. 2. N의 각 자리수를 쪼개서 리스트에 넣는다. 3. 리스트를 내림차순으로 정렬한다. import java.io.IOException; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; public class Main{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // N의 각 자리수를 저장할 ..
[백준] 2108 : 통계학 JAVA 풀이 다들 그랬겠지만 나역시도 최빈값을 구하는 게 제일 어려웠다. 빈도수가 가장 큰 걸 찾는 건 쉬운데 두 번째로 작은 값은 어떻게 찾나 엄청 고민했다. 다 풀고나서 보니 flag 하나만 추가하면 풀 수 있도록 저런 조건을 둔 것 같다. 1. 입력될 숫자의 개수 N을 입력받는다. 2. N개의 숫자를 입력받아 배열에 저장하고, 평균을 구할 때 사용할 누적합을 구한다. 3. N개의 숫자가 저장된 배열을 정렬한다. 4. 숫자의 빈도수를 셀 cnt, 빈도수 중 최댓값을 저장할 max, 최빈값을 저장할 mode, 처음 등장한 최빈값인지 판단하는 boolean형 flag를 생성한다. 5. 정렬된 배열을 순회하면서 다음 숫자가 자신과 같을 때마다 cnt를 증가시킨다. 6. cnt가 max보다 커지면 max와 mode값을 ..
[백준] 10989 : 수 정렬하기 3 JAVA 풀이 카운팅정렬을 구현하는 방법은 다음과 같다. 1. 입력받을 숫자의 개수를 N이라고 했을 때, 그 숫자들을 저장할 배열 arr[N]와 정렬된 값을 저장할 result[N]을 생성한다. 2. arr에 저장된 숫자들의 출현빈도를 저장할 배열을 생성하는데 이때 그 배열의 크기는 입력되는 숫자의 범위로 한다. 그 범위를 10000이하의 자연수라고 하면 count[10001]을 생성한다. 3. arr를 순회하면서 arr에 저장된 숫자의 출현빈도를 count의 그 숫자를 인덱스로 하는 곳에 저장한다. count[arr[i]]++; 4. count 배열을 누적합으로 바꾼다. i=1부터 count.length-1까지 count[i] = count[i] + count[i-1]; 이를 수행하고 난 뒤의 count[0]이 3이..
[백준] 2751 : 수 정렬하기 2 JAVA 풀이 문제 제목 아래의 설명란 같은 곳에 언어에 내장된 함수를 쓰는 걸 추천한다기에 Arrays.sort()를 썼는데 시간초과가 나왔다. 코드는 1. N을 입력받는다. 2. N개의 수를 입력받아 배열에 저장한다 3. Arrays.sort()로 정렬한다. 4. System.out.println()으로 배열의 값을 출력한다. 이렇게 구성했는데 4번에서 시간이 오래 걸리는 게 아닌가 하고 StringBuilder를 사용했더니 어찌저찌 통과가 되긴 했다. import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.IOException; import java.util.Arrays; public class Main{ public stat..
[백준] 1436 : 영화감독 숌 JAVA 풀이 1. 정수 N을 입력받는다. 2. 몇번째 종말의 숫자인지 셀 변수 cnt를 생성한다. 3. 변수 i를 666부터 1씩 증가시켜나가면서 i에 "666"이 포함될 때마다 cnt를 증가시킨다. -> String.contains() 메서드를 사용하기 위해서 int형 i를 Integer.toString()으로 스트링으로 변환시켜준다. 4. cnt가 N과 같아지는 순간의 i값을 출력하고 반복문을 종료한다. import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.IOException; public class Main{ public static void main(String[] args) throws IOException{ Buff..