알고리즘 공부/백준 문제풀이 144

[백준] 수찾기 1920 (JAVA) 이진탐색, 메서드, HashSet

수 찾기 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 128 MB 172348 51518 34199 29.830% 문제 N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다. 출력 M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다. 예제 입..

[백준] 4949 : 균형잡힌 세상 (JAVA)

균형잡힌 세상 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 128 MB 78223 25952 20417 32.355% 문제 세계는 균형이 잘 잡혀있어야 한다. 양과 음, 빛과 어둠 그리고 왼쪽 괄호와 오른쪽 괄호처럼 말이다. 정민이의 임무는 어떤 문자열이 주어졌을 때, 괄호들의 균형이 잘 맞춰져 있는지 판단하는 프로그램을 짜는 것이다. 문자열에 포함되는 괄호는 소괄호("()") 와 대괄호("[]")로 2종류이고, 문자열이 균형을 이루는 조건은 아래와 같다. 모든 왼쪽 소괄호("(")는 오른쪽 소괄호(")")와만 짝을 이뤄야 한다. 모든 왼쪽 대괄호("[")는 오른쪽 대괄호("]")와만 짝을 이뤄야 한다. 모든 오른쪽 괄호들은 자신과 짝을 이룰 수 있는 왼쪽 괄호가 존재한다. 모든 괄호들..

[백준] 9012 괄호 (JAVA)

괄호 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 128 MB 141879 65199 47101 44.853% 문제 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다. 그리고 두 VPS x 와 y를 접합(concatenation)시킨 새로운 문자열 xy도 VPS 가 된다. 예를 들어 “(())()”와 “((()))” 는 VPS 이지만 ..

[백준] 9012 괄호 (JAVA)

괄호 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 128 MB 141879 65199 47101 44.853% 문제 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다. 그리고 두 VPS x 와 y를 접합(concatenation)시킨 새로운 문자열 xy도 VPS 가 된다. 예를 들어 “(())()”와 “((()))” 는 VPS 이지만 ..

[백준] 2581 소수(JAVA)

2581 자바 소수 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 128 MB 105694 41295 34904 39.029% 문제 자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로, 이들 소수의 합은 620이고, 최솟값은 61이 된다. 입력 입력의 첫째 줄에 M이, 둘째 줄에 N이 주어진다. M과 N은 10,000이하의 자연수이며, M은 N보다 작거나 같다. 출력 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 ..

[백준] 11399 : ATM (JAVA)

백준 11399 자바 ATM 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 256 MB 77522 51898 42034 67.485% 문제 인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다. 사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게 된다. 예를 들어, 총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우를 생각해보자. [1, 2, 3, 4, 5] 순서로 줄을 선다면, 1번 사람은 3분만에 돈을 뽑을 수 있다. 2번 사람은 1번 사람이 돈을 뽑을 때 까지 기다려야 하기 때..

[백준] 2748 : 피보나치 수 2(JAVA)

피보나치 수 2 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 128 MB 79859 32236 26459 40.028% 문제 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 n이 주어진다. n은 90보다 작거나 같은 자연수이다. 출력 첫째 줄..

[백준] 10870 : 피보나치 수 5(JAVA) - 피보나치 재귀함수

백준 10870 자바 피보나치 수 5 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 256 MB 85692 52509 44843 61.796% 문제 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 n이 주어진다. n은 20보다 작거나 같은 자연..

[백준] 1679 : 팩토리얼 0의 개수(JAVA)

백준 1676 자바 팩토리얼 0의 개수 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 128 MB 51166 24558 20357 47.885% 문제 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500) 출력 첫째 줄에 구한 0의 개수를 출력한다. 예제 입력 1 10 예제 출력 1 2 예제 입력 2 3 예제 출력 2 0 방법1 - factorial 재귀함수 주의! N의 범위는 (0 ≤ N ≤ 500)로 매우 큰 수가 될 수 있다. BigInteger로 풀어줘야 한다. 못푼다. 답은 나오지만 범위가 커지면 안되는 틀린 코드 import java.io.BufferedReader; import..

[백준] 11931 : 수 정렬하기 4(JAVA)

백준 11931 자바 수 정렬하기 4 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 256 MB 10826 5766 4659 55.228% 문제 N개의 수가 주어졌을 때, 이를 내림차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력 첫째 줄부터 N개의 줄에 내림차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 예제 입력 1 5 1 2 3 4 5 예제 출력 1 5 4 3 2 1 Arrays.sort() 를 쓰면 시간초과가 날 수 있으니 Collection.sort() 를 쓰자 Collecti..