diff --git "a/\353\260\261\354\244\200/Bronze/14681.\342\200\205\354\202\254\353\266\204\353\251\264\342\200\205\352\263\240\353\245\264\352\270\260/README.md" "b/\353\260\261\354\244\200/Bronze/14681.\342\200\205\354\202\254\353\266\204\353\251\264\342\200\205\352\263\240\353\245\264\352\270\260/README.md" new file mode 100644 index 0000000..8cdc958 --- /dev/null +++ "b/\353\260\261\354\244\200/Bronze/14681.\342\200\205\354\202\254\353\266\204\353\251\264\342\200\205\352\263\240\353\245\264\352\270\260/README.md" @@ -0,0 +1,34 @@ +# [Bronze V] 사분면 고르기 - 14681 + +[문제 링크](https://www.acmicpc.net/problem/14681) + +### 성능 요약 + +메모리: 14132 KB, 시간: 100 ms + +### 분류 + +구현, 기하학 + +### 제출 일자 + +2026년 2월 22일 00:23:03 + +### 문제 설명 + +
흔한 수학 문제 중 하나는 주어진 점이 어느 사분면에 속하는지 알아내는 것이다. 사분면은 아래 그림처럼 1부터 4까지 번호를 갖는다. "Quadrant n"은 "제n사분면"이라는 뜻이다.
+ +
예를 들어, 좌표가 (12, 5)인 점 A는 x좌표와 y좌표가 모두 양수이므로 제1사분면에 속한다. 점 B는 x좌표가 음수이고 y좌표가 양수이므로 제2사분면에 속한다.
+ +점의 좌표를 입력받아 그 점이 어느 사분면에 속하는지 알아내는 프로그램을 작성하시오. 단, x좌표와 y좌표는 모두 양수나 음수라고 가정한다.
+ +### 입력 + +첫 줄에는 정수 x가 주어진다. (−1000 ≤ x ≤ 1000; x ≠ 0) 다음 줄에는 정수 y가 주어진다. (−1000 ≤ y ≤ 1000; y ≠ 0)
+ +### 출력 + +점 (x, y)의 사분면 번호(1, 2, 3, 4 중 하나)를 출력한다.
+ diff --git "a/\353\260\261\354\244\200/Bronze/14681.\342\200\205\354\202\254\353\266\204\353\251\264\342\200\205\352\263\240\353\245\264\352\270\260/\354\202\254\353\266\204\353\251\264\342\200\205\352\263\240\353\245\264\352\270\260.java" "b/\353\260\261\354\244\200/Bronze/14681.\342\200\205\354\202\254\353\266\204\353\251\264\342\200\205\352\263\240\353\245\264\352\270\260/\354\202\254\353\266\204\353\251\264\342\200\205\352\263\240\353\245\264\352\270\260.java" new file mode 100644 index 0000000..426c653 --- /dev/null +++ "b/\353\260\261\354\244\200/Bronze/14681.\342\200\205\354\202\254\353\266\204\353\251\264\342\200\205\352\263\240\353\245\264\352\270\260/\354\202\254\353\266\204\353\251\264\342\200\205\352\263\240\353\245\264\352\270\260.java" @@ -0,0 +1,25 @@ + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class Main{ + public static void main(String[] args) throws IOException { + + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + + int A = Integer.parseInt(br.readLine()); + int B = Integer.parseInt(br.readLine()); + + if (A > 0 && B > 0) { + System.out.println("1"); + } else if (A < 0 && B >0) { + System.out.println("2"); + } else if (A > 0 && B < 0) { + System.out.println("4"); + } else { + System.out.println(3); + } + + } +} diff --git "a/\353\260\261\354\244\200/Silver/10815.\342\200\205\354\210\253\354\236\220\342\200\205\354\271\264\353\223\234/README.md" "b/\353\260\261\354\244\200/Silver/10815.\342\200\205\354\210\253\354\236\220\342\200\205\354\271\264\353\223\234/README.md" new file mode 100644 index 0000000..673133e --- /dev/null +++ "b/\353\260\261\354\244\200/Silver/10815.\342\200\205\354\210\253\354\236\220\342\200\205\354\271\264\353\223\234/README.md" @@ -0,0 +1,30 @@ +# [Silver V] 숫자 카드 - 10815 + +[문제 링크](https://www.acmicpc.net/problem/10815) + +### 성능 요약 + +메모리: 227964 KB, 시간: 1868 ms + +### 분류 + +자료 구조, 정렬, 이분 탐색, 집합과 맵, 해시를 사용한 집합과 맵 + +### 제출 일자 + +2026년 2월 16일 21:12:55 + +### 문제 설명 + +숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지를 구하는 프로그램을 작성하시오.
+ +### 입력 + +첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다. 두 숫자 카드에 같은 수가 적혀있는 경우는 없다.
+ +셋째 줄에는 M(1 ≤ M ≤ 500,000)이 주어진다. 넷째 줄에는 상근이가 가지고 있는 숫자 카드인지 아닌지를 구해야 할 M개의 정수가 주어지며, 이 수는 공백으로 구분되어져 있다. 이 수도 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다
+ +### 출력 + +첫째 줄에 입력으로 주어진 M개의 수에 대해서, 각 수가 적힌 숫자 카드를 상근이가 가지고 있으면 1을, 아니면 0을 공백으로 구분해 출력한다.
+ diff --git "a/\353\260\261\354\244\200/Silver/10815.\342\200\205\354\210\253\354\236\220\342\200\205\354\271\264\353\223\234/\354\210\253\354\236\220\342\200\205\354\271\264\353\223\234.py" "b/\353\260\261\354\244\200/Silver/10815.\342\200\205\354\210\253\354\236\220\342\200\205\354\271\264\353\223\234/\354\210\253\354\236\220\342\200\205\354\271\264\353\223\234.py" new file mode 100644 index 0000000..9a9704a --- /dev/null +++ "b/\353\260\261\354\244\200/Silver/10815.\342\200\205\354\210\253\354\236\220\342\200\205\354\271\264\353\223\234/\354\210\253\354\236\220\342\200\205\354\271\264\353\223\234.py" @@ -0,0 +1,48 @@ +''' +문제 : 상근이가 가지고 있는 카드 - 그 카드의 숫자 중 정수 M개 해당되는건 몇개인지 + +1. 숫자카드개수 +2. 숫자카드에 적혀있는 정수 +3. 정수 M개 +4. 정수 숫자 +''' +import sys +input = sys.stdin.readline +#상근이가 가지고 있는 +N = int(input()) +cards = sorted(list(map(int,input().split()))) + +#찾아야하는 +M = int(input()) +nums = list(map(int,input().split())) + +target_nums_dict = dict() + +for i,t in enumerate(nums): + if t not in target_nums_dict: + target_nums_dict[t] = [] + target_nums_dict[t].append(i) + +target_nums = sorted(target_nums_dict.items()) + + +answer = [0] * M + +cards_point = 0 +nums_point = 0 + + + +while cards_point < N and nums_point < len(target_nums): + if cards[cards_point] < target_nums[nums_point][0]: + cards_point += 1 + elif cards[cards_point] > target_nums[nums_point][0]: + nums_point += 1 + else: + lst = target_nums[nums_point][1] + for l in lst: + answer[l] = 1 + cards_point += 1 + nums_point += 1 + +print(' '.join(map(str,answer))) \ No newline at end of file diff --git "a/\353\260\261\354\244\200/Silver/1920.\342\200\205\354\210\230\342\200\205\354\260\276\352\270\260/README.md" "b/\353\260\261\354\244\200/Silver/1920.\342\200\205\354\210\230\342\200\205\354\260\276\352\270\260/README.md" index 763badd..3d2db86 100644 --- "a/\353\260\261\354\244\200/Silver/1920.\342\200\205\354\210\230\342\200\205\354\260\276\352\270\260/README.md" +++ "b/\353\260\261\354\244\200/Silver/1920.\342\200\205\354\210\230\342\200\205\354\260\276\352\270\260/README.md" @@ -4,7 +4,7 @@ ### 성능 요약 -메모리: 48604 KB, 시간: 856 ms +메모리: 49152 KB, 시간: 404 ms ### 분류 @@ -12,7 +12,7 @@ ### 제출 일자 -2025년 9월 29일 22:24:16 +2025년 11월 15일 23:10:33 ### 문제 설명 diff --git "a/\353\260\261\354\244\200/Silver/1920.\342\200\205\354\210\230\342\200\205\354\260\276\352\270\260/\354\210\230\342\200\205\354\260\276\352\270\260.py" "b/\353\260\261\354\244\200/Silver/1920.\342\200\205\354\210\230\342\200\205\354\260\276\352\270\260/\354\210\230\342\200\205\354\260\276\352\270\260.py" index 6c3f6f1..b1b0c14 100644 --- "a/\353\260\261\354\244\200/Silver/1920.\342\200\205\354\210\230\342\200\205\354\260\276\352\270\260/\354\210\230\342\200\205\354\260\276\352\270\260.py" +++ "b/\353\260\261\354\244\200/Silver/1920.\342\200\205\354\210\230\342\200\205\354\260\276\352\270\260/\354\210\230\342\200\205\354\260\276\352\270\260.py" @@ -1,27 +1,41 @@ +''' +특정 수를 찾아라 ->> 이진 / 이분탐색 +정렬된 배열 + +''' import sys -input = sys.stdin.readline -N = int(input()) -A = sorted(list(map(int,input().split()))) -M = int(input()) -F = list(map(int,input().split())) +input = sys.stdin.readline -for f in F: - st = 0 - en = N-1 - md = (st+en) // 2 - flag = False - while st <= en: - md = (st+en) // 2 - if A[md] == f: - print(1) - flag = True - break - elif A[md] < f: - st = md +1 +def find_x(N,aList,target): + result = list() + for t in target: + st = 0 + en = N-1 + found = False + while st <= en: + md = (st+en) // 2 + if t < aList[md]: #en 옮겨 + en = md -1 + elif t > aList[md]: #st 증가 + st = md + 1 + else: + found = True + break + if found: + result.append(1) else: - en = md -1 - if not flag: - print(0) + result.append(0) + return result + + +N = int(input()) + +aList = list(map(int,input().split())) +aList.sort(reverse=False) + +M = int(input()) +target = list(map(int,input().split())) - \ No newline at end of file +for i in find_x(N,aList,target): + print(i) \ No newline at end of file diff --git "a/\353\260\261\354\244\200/Silver/2512.\342\200\205\354\230\210\354\202\260/README.md" "b/\353\260\261\354\244\200/Silver/2512.\342\200\205\354\230\210\354\202\260/README.md" new file mode 100644 index 0000000..4bbd82e --- /dev/null +++ "b/\353\260\261\354\244\200/Silver/2512.\342\200\205\354\230\210\354\202\260/README.md" @@ -0,0 +1,37 @@ +# [Silver II] 예산 - 2512 + +[문제 링크](https://www.acmicpc.net/problem/2512) + +### 성능 요약 + +메모리: 33432 KB, 시간: 40 ms + +### 분류 + +이분 탐색, 매개 변수 탐색 + +### 제출 일자 + +2025년 11월 20일 14:41:18 + +### 문제 설명 + +국가의 역할 중 하나는 여러 지방의 예산요청을 심사하여 국가의 예산을 분배하는 것이다. 국가예산의 총액은 미리 정해져 있어서 모든 예산요청을 배정해 주기는 어려울 수도 있다. 그래서 정해진 총액 이하에서 가능한 한 최대의 총 예산을 다음과 같은 방법으로 배정한다.
+ +예를 들어, 전체 국가예산이 485이고 4개 지방의 예산요청이 각각 120, 110, 140, 150이라고 하자. 이 경우, 상한액을 127로 잡으면, 위의 요청들에 대해서 각각 120, 110, 127, 127을 배정하고 그 합이 484로 가능한 최대가 된다.
+ +여러 지방의 예산요청과 국가예산의 총액이 주어졌을 때, 위의 조건을 모두 만족하도록 예산을 배정하는 프로그램을 작성하시오.
+ +### 입력 + +첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상 100,000 이하이다. 그 다음 줄에는 총 예산을 나타내는 정수 M이 주어진다. M은 N 이상 1,000,000,000 이하이다.
+ +### 출력 + +첫째 줄에는 배정된 예산들 중 최댓값인 정수를 출력한다.
+ diff --git "a/\353\260\261\354\244\200/Silver/2512.\342\200\205\354\230\210\354\202\260/\354\230\210\354\202\260.py" "b/\353\260\261\354\244\200/Silver/2512.\342\200\205\354\230\210\354\202\260/\354\230\210\354\202\260.py" new file mode 100644 index 0000000..1f77ec4 --- /dev/null +++ "b/\353\260\261\354\244\200/Silver/2512.\342\200\205\354\230\210\354\202\260/\354\230\210\354\202\260.py" @@ -0,0 +1,35 @@ +import sys +input = sys.stdin.readline + +def max_budget(N,budget, M) -> int: + if sum(budget) <= M: + return max(budget) + else: + st = 0 + en = max(budget) + cap = 0 + while st <= en: + md =(st + en) //2 + case1 = 0 + for i in budget: + if i <= md: + case1 += i + else: + case1 += md + if case1 <= M: + cap = md + st = md + 1 + else: #상환액 보다 큰경우이니깐 + en = md - 1 + return cap + + + +#지방의 수 +N = int(input()) +#예산 +budget = list(map(int,input().split())) +#총 예산 +M = int(input()) + +print(max_budget(N,budget,M)) \ No newline at end of file