Algorithm/백준

Algorithm/백준

백준 5052번 : 전화번호 목록(Java)

[풀이] java의 startsWith() 메소드를 이용하면 풀 수 있습니다. 하지만, startsWith() 메소드를 사용하기 이전에 정렬을 하면 시간 복잡도를 줄일 수 있습니다. 정렬을 하지 않을 경우 O^2의 시간복잡도로 모든 경우를 다 탐색해야하지만, 정렬을 할 경우에는 바로 앞, 뒤 배열의 값만 비교하면 되므로 시간초과가 나지 않습니다. 프로그래머스의 전화번호 목록 문제와 거의 비슷한 문제입니다. [코드] import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class Main { public static void main(St..

Algorithm/백준

백준 2822번 : 점수 계산(Java)

https://www.acmicpc.net/problem/2822 2822번: 점수 계산 8개 줄에 걸쳐서 각 문제에 대한 참가자의 점수가 주어진다. 점수는 0보다 크거나 같고, 150보다 작거나 같다. 모든 문제에 대한 점수는 서로 다르다. 입력으로 주어지는 순서대로 1번 문제, 2번 문 www.acmicpc.net [풀이] 문제의 개수는 8개로 정해져있기 때문에 배열의 크기는 8입니다. 2차원 배열로 만들며 인덱스 0의 열은 점수를, 인덱스 1의 열은 해당 인덱스를 저장합니다. 배열을 정렬할 때 기준은 내림차순으로 정렬하며 새로운 배열에 정렬된 배열의 인덱스 5개를 저장하고 다시 오름차순으로 정렬합니다. 이후, 계산된 답과 인덱스를 반환합니다. [코드] import java.io.BufferedRea..

Algorithm/백준

백준 18310번 : 안테나(Java)

https://www.acmicpc.net/problem/18310 18310번: 안테나 첫째 줄에 집의 수 N이 자연수로 주어진다. (1≤N≤200,000) 둘째 줄에 N채의 집에 위치가 공백을 기준으로 구분되어 1이상 100,000이하의 자연수로 주어진다. www.acmicpc.net [풀이] 주어지는 집들의 번호가 여러개일 때 항상 중위값에 위치한 집에 안테나를 설정하는 것이 가장 적절합니다. 그러므로, 정렬을 실시하여 배열의 중위값을 반환해야합니다. 중위값은 N이 짝수인지, 홀수인지에 따라 나뉘어지므로 이 부분을 구분하여 답을 출력해야합니다. [코드] import java.io.BufferedReader; import java.io.IOException; import java.io.InputStr..

Algorithm/백준

백준 1920번 : 수 찾기(Java)

https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net [풀이] 이분탐색 유형의 문제로 기본 개념을 익히기 좋은 문제라고 생각한다. 파이썬으로도 풀어보고, 자바로 두번째로 풀어보는데 다시 한번 개념을 익힐 수 있었다. A 배열을 입력받은 후, 이분탐색을 하기 이전에 정렬을 하는 것이 첫번째, 이분 탐색 메소드를 정의하는 것이 두번째 단계였다. [코드] import java.io.BufferedReader..

Algorithm/백준

백준 14719번 : 빗물(Java)

https://www.acmicpc.net/problem/14719 14719번: 빗물 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치 www.acmicpc.net [풀이] 처음에는, 오른쪽으로 인덱스를 진행하면서 현재 값보다 높은 곳의 인덱스를 구해 넓이로 계산하려했다. 하지만, 이렇게 하니, 코드가 복잡해지고 인덱스 계산하는 것이 어려워졌다. 결국 다른 분들의 코드를 참조했고 좌우 기둥의 가장 높은 인덱스를 계산하는 것에 대해 알게 되었다. 좌우 가장 높은 기둥의 인덱스를 각각 구한 후, 더 낮은 곳의 높이에서 현재 인덱스의 기둥을 뺀 ..

Algorithm/백준

백준 10816번 : 숫자 카드 2(Java)

https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net [풀이] 이분 탐색 유형의 문제인데 이번에는 HashMap 자료구조를 이용해서 풀었다. HashMap의 getOrDefault() 메소드를 이용해서 값이 있을 경우 값의 +1을, 없을 경우 0을 반환하는 식으로 진행했다. [코드] import java.io.BufferedReader; import java.io.IOException; import java.io.I..

skyey94
'Algorithm/백준' 카테고리의 글 목록 (14 Page)