Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions src/choeunsin/10815.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# 숫자카드
import sys

N = int(input())
n_data = list(map(int, sys.stdin.readline().rstrip().split()))
M = int(input())
m_data = list(map(int, sys.stdin.readline().rstrip().split()))

# 오름차순 정렬
n_data.sort()

for i in range(M):
start = 0
end = len(n_data) - 1

# 이분탐색을 이용한 값 구하기
while start < end:
middle = int((start + end) / 2)
if n_data[middle] >= m_data[i]:
end = middle
else:
start = middle + 1

# n_data에 정해진 값이 존재하는지 확인
if n_data[start] == m_data[i]:
m_data[i] = 1
else:
m_data[i] = 0

print(*m_data)
40 changes: 40 additions & 0 deletions src/choeunsin/1644.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# 소수의 연속합
def isPrimeNumber(n):
# 에라토스테네스의 체 초기화: n개 요소에 True 설정
check = [True] * n

# n의 제곱근
m = int(n ** 0.5)
for i in range(2, m + 1):
# i가 소수일 때
if check[i] == True:
# i이후 i의 배수들을 False로 변환(소수가 아님)
for j in range(i + i, n, i):
check[j] = False

# 소수 목록 리스트로 리턴
return [i for i in range(2, n) if check[i] == True]

N = int(input())
data = isPrimeNumber(N+1) #2부터 N까지 소수로 이루어진 리스트

count = 0 # 합이 M이 되는 경우의 수
fir = 0 # 첫번째 포인터
sec = 0 # 두번째 포인터
now = 0 # 현재 합

while (sec <= len(data)):
#첫번째부터 두번째까지 data의 합 저장
now = sum(data[fir:sec])
# 합이 목표값보다 크면 첫번째 포인터의 기준에서는 더 구할 값이 없음
# 첫번째 포인터 한 칸 이동
if now > N:
fir += 1
# 합이 목표값보다 크지 않으면 두번째 포인터 한칸 이동
else:
# 합이 목표값과 같으면 count++
if now == N:
count += 1
sec += 1

print(count)
30 changes: 30 additions & 0 deletions src/choeunsin/1822.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# 차집합
import sys

A, B = map(int, sys.stdin.readline().split())
a_data = list(map(int, sys.stdin.readline().rstrip().split()))
b_data = list(map(int, sys.stdin.readline().rstrip().split()))

a_data.sort()
b_data.sort()
answer_list = []

for i in range(A):
start = 0
end = len(b_data) - 1

# 이분탐색을 이용한 값 구하기
while start < end:
middle = int((start + end) / 2)
if b_data[middle] >= a_data[i]:
end = middle
else:
start = middle + 1

# a_data에 정해진 값이 존재하지 않으면 answer_list에 추가
if b_data[start] != a_data[i]:
answer_list.append(a_data[i])

print(len(answer_list))
if len(answer_list) > 0:
print(*answer_list)
26 changes: 26 additions & 0 deletions src/choeunsin/2003.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# 수들의 합2
N, M = map(int, input().split())
data = [*map(int, input().split())]

count = 0 # 합이 M이 되는 경우의 수
fir = 0 # 첫번째 포인터
sec = 0 # 두번째 포인터
now = 0 # 현재 합

while (sec <= N):
#첫번째부터 두번째까지 data의 합 저장
now = sum(data[fir:sec])
# 합이 M보다 크면 첫번째 포인터의 기준에서는 더 구할 값이 없음
# 첫번째 포인터 한 칸 이동
if now > M:
fir += 1
# 합이 M보다 크지 않으면 두번째 포인터 한칸 이동
else:
# 합이 M과 같으면 count++
if now == M:
count += 1
sec += 1

print(count)


6 changes: 3 additions & 3 deletions src/choeunsin/2170.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
#선 긋기
import sys

N = int(input()) #선을 그은 횟수
N = int(input()) #선을 그은 횟수
data = [list(map(int, sys.stdin.readline().split())) for _ in range(N)] #선의 시작점, 끝점

data.sort() #시작점 순서대로 정렬
data.sort() #시작점 순서대로 정렬

line = data[0] #그은 선의 시작점, 끝점은 첫번째 배열로
line = data[0] #그은 선의 시작점, 끝점은 첫번째 배열로
count = line[1] - line[0] #그은 선의 길이는 첫번째 배열의 길이로

for i in range(1, N):
Expand Down
4 changes: 2 additions & 2 deletions src/choeunsin/2836.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@
N, M = map(int, sys.stdin.readline().split()) #손님의 수와 상근의 최종 목적지 거리 입력받기
data = [list(map(int, sys.stdin.readline().split())) for _ in range(N)] #승객들의 출발지/도착지 입력받기

go_back = [] #반대 방향으로 가는 승객들을 저장할 배열
go_back = [] #반대 방향으로 가는 승객들을 저장할 배열

for i in range(N):
if data[i][0] > data[i][1]:
go_back.append([data[i][1], data[i][0]]) #반대방향으로 가는 승객들을 출발지/도착지를 반대로 해서 정방향으로 저장

go_back.sort() #출발지를 기준 오름차순 정렬
go_back.sort() #출발지를 기준 오름차순 정렬

#2170의 선긋기와 동일한 go_back의 중복 제거 거리 구하기
line = go_back[0]
Expand Down