Skip to content

Commit b21382a

Browse files
authored
Merge pull request #59 from 24-Algorithm/minjeong
Minjeong / 9์›” 2-3์ฃผ์ฐจ / 6๋ฌธ์ œ
2 parents ce3ee41 + 25c8650 commit b21382a

7 files changed

+189
-0
lines changed

โ€Ž.DS_Storeโ€Ž

0 Bytes
Binary file not shown.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
n = int(input())
2+
origin = [int(n) for n in input().split()] # 4,1,5,2,3
3+
m = int(input())
4+
compare = [int(m) for m in input().split()] # 1,3,7,9,5
5+
6+
origin.sort() # 1,2,3,4,5
7+
8+
for i in range(m): #
9+
tag = False
10+
low = 0
11+
high = len(origin) - 1
12+
target = compare[i] # 5
13+
while low <= high:
14+
mid = (low + high) // 2
15+
if origin[mid] == target:
16+
tag = True
17+
print(1)
18+
break
19+
elif origin[mid] > target:
20+
high = mid - 1
21+
else:
22+
low = mid + 1
23+
24+
if tag is False:
25+
print(0)
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# PGS. 2024 KAKAO WINTER INTERNSHIP - ๊ฐ€์žฅ ๋งŽ์ด ๋ฐ›์€ ์„ ๋ฌผ
2+
def solution(friends, gifts):
3+
gift_map = {} # ๊ฐ ์นœ๊ตฌ ์Œ ๊ฐ„ ์„ ๋ฌผ ๊ธฐ๋ก
4+
send_count = {} # ์„ ๋ฌผ ์ค€ ํšŸ์ˆ˜ ๋”•์…”๋„ˆ๋ฆฌ
5+
receive_count = {} # ์„ ๋ฌผ ๋ฐ›์€ ํšŸ์ˆ˜ ๋”•์…”๋„ˆ๋ฆฌ
6+
gift_count = {} # ์„ ๋ฌผ ์ง€์ˆ˜ ๋”•์…”๋„ˆ๋ฆฌ
7+
next_month_gift_cnt = {} # ๋‹ค์Œ ๋‹ฌ์— ๋ฐ›์„ ์„ ๋ฌผ์˜ ๊ฐœ์ˆ˜๋ฅผ ์นœ๊ตฌ๋“ค๋ณ„๋กœ ์ €์žฅํ•˜๋Š” ๋”•์…”๋„ˆ๋ฆฌ
8+
9+
for friend in friends: # ์ดˆ๊ธฐํ™”
10+
gift_map[friend] = {}
11+
send_count[friend] = 0
12+
receive_count[friend] = 0
13+
gift_count[friend] = 0
14+
next_month_gift_cnt[friend] = 0
15+
16+
# ์„ ๋ฌผ ๊ธฐ๋ก ๋ถ„์„(๊ฐ ์นœ๊ตฌ ๊ฐ„์— ๋ˆ„๊ฐ€ ๋ช‡ ๋ฒˆ ์„ ๋ฌผ์„ ์ฃผ๊ณ ๋ฐ›์•˜๋Š”์ง€)
17+
for gift in gifts:
18+
sender, receiver = gift.split()
19+
if receiver not in gift_map[sender]: # ํ•ด๋‹น ์นœ๊ตฌ ๊ฐ„์˜ ๊ธฐ๋ก์ด ์—†๋‹ค๋ฉด 0์œผ๋กœ ์ดˆ๊ธฐํ™”
20+
gift_map[sender][receiver] = 0
21+
if sender not in gift_map[receiver]: # ํ•ด๋‹น ์นœ๊ตฌ ๊ฐ„์˜ ๊ธฐ๋ก์ด ์—†๋‹ค๋ฉด 0์œผ๋กœ ์ดˆ๊ธฐํ™”
22+
gift_map[receiver][sender] = 0
23+
gift_map[sender][receiver] += 1 # sender๊ฐ€ receiver์—๊ฒŒ ์„ ๋ฌผํ•œ ํšŸ์ˆ˜ +1
24+
25+
send_count[sender] += 1 # sender๊ฐ€ ์ค€ ์„ ๋ฌผ ํšŸ์ˆ˜ +1
26+
receive_count[receiver] += 1 # receiver๊ฐ€ ๋ฐ›์€ ์„ ๋ฌผ ํšŸ์ˆ˜ +1
27+
28+
# ์„ ๋ฌผ ์ง€์ˆ˜ ๊ณ„์‚ฐ
29+
for friend in friends:
30+
# ์„ ๋ฌผ์ง€์ˆ˜: ์ค€ ์„ ๋ฌผ ์ˆ˜ - ๋ฐ›์€ ์„ ๋ฌผ ์ˆ˜
31+
gift_count[friend] = send_count[friend] - receive_count[friend]
32+
33+
# ๋ชจ๋“  ์นœ๊ตฌ ์Œ์„ ๋น„๊ตํ•˜์—ฌ ๋‹ค์Œ ๋‹ฌ์— ๋ฐ›์„ ์„ ๋ฌผ ์ˆ˜ ๊ณ„์‚ฐ
34+
for i in range(len(friends)):
35+
for j in range(i + 1, len(friends)):
36+
A = friends[i]
37+
B = friends[j]
38+
if gift_map[A].get(B, 0) > gift_map[B].get(A, 0): # A>B์ด๋ฉด, A๊ฐ€ ๋‹ค์Œ๋‹ฌ์— ๋ฐ›์Œ
39+
next_month_gift_cnt[A] += 1
40+
elif gift_map[A].get(B, 0) < gift_map[B].get(A, 0): #A<B์ด๋ฉด, B๊ฐ€ ๋‹ค์Œ๋‹ฌ์— ๋ฐ›์Œ
41+
next_month_gift_cnt[B] += 1
42+
else: # ๋‘ ์‚ฌ๋žŒ์ด ์ฃผ๊ณ ๋ฐ›์€ ์ˆ˜๊ฐ€ ๊ฐ™๋‹ค๋ฉด, ์„ ๋ฌผ ์ง€์ˆ˜๊ฐ€ ๋” ํฐ ์‚ฌ๋žŒ์ด ๋ฐ›์Œ
43+
if gift_count[A] > gift_count[B]:
44+
next_month_gift_cnt[A] += 1
45+
elif gift_count[A] < gift_count[B]:
46+
next_month_gift_cnt[B] += 1
47+
# ์„ ๋ฌผ ์ง€์ˆ˜๋„ ๊ฐ™๋‹ค๋ฉด ์•„๋ฌด๋„ ๋ฐ›์ง€ ์•Š์Œ
48+
49+
# ๊ฐ€์žฅ ๋งŽ์ด ๋ฐ›์„ ์นœ๊ตฌ ๋ฐ˜ํ™˜
50+
return max(next_month_gift_cnt.values())
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
'''
2+
์–‘ ๋ชจ์€ ์ˆ˜๋ณด๋‹ค ๋Š‘๋Œ€์˜ ์ˆ˜๊ฐ€ ๊ฐ™๊ฑฐ๋‚˜ ๋งŽ์•„์ง€๋ฉด ์ข…๋ฃŒ๋จ
3+
๋ถ€๋ชจ ๋…ธ๋“œ๋Š” ๋ฐฉ๋ฌธํ–ˆ์ง€๋งŒ ์ž์‹ ๋…ธ๋“œ๋Š” ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜์„ ๋•Œ ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์žˆ์Œ
4+
5+
'''
6+
7+
8+
def solution(info, edges):
9+
# info - 0: ์–‘, 1: ๋Š‘๋Œ€
10+
global answer
11+
answer = 0
12+
visited = [False] * len(info)
13+
visited[0] = True # 0๋ฒˆ ๋…ธ๋“œ๋Š” ํ•ญ์ƒ ์–‘์ด ์žˆ์Œ
14+
15+
def dfs(sheep, wolf):
16+
global answer
17+
18+
if wolf < sheep: # ์–‘์ด ๋Š‘๋Œ€๋ณด๋‹ค ๋” ๋งŽ์œผ๋ฉด ๋ชจ์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์–‘ ๋งˆ๋ฆฌ ์ˆ˜ ์—…๋ฐ์ดํŠธ
19+
answer = max(answer, sheep)
20+
else: # ๋Š‘๋Œ€๊ฐ€ ์–‘์˜ ์ˆ˜์™€ ๊ฐ™๊ฑฐ๋‚˜ ๋” ๋งŽ์„ ๊ฒฝ์šฐ ์ข…๋ฃŒ๋จ
21+
return
22+
23+
for parent, child in edges:
24+
# ๋ถ€๋ชจ ๋…ธ๋“œ๋Š” ๋ฐฉ๋ฌธํ–ˆ์ง€๋งŒ ์ž์‹ ๋…ธ๋“œ๋Š” ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜์„ ๋•Œ
25+
if visited[parent] and not visited[child]:
26+
visited[child] = True
27+
if info[child] == 0: # ์–‘์ด๋ผ๋ฉด ์–‘ ๋งˆ๋ฆฌ ์ˆ˜ + 1
28+
dfs(sheep + 1, wolf)
29+
else: # ๋Š‘๋Œ€๋ผ๋ฉด ๋Š‘๋Œ€ ๋งˆ๋ฆฌ ์ˆ˜ + 1
30+
dfs(sheep, wolf + 1)
31+
visited[child] = False
32+
33+
dfs(1, 0) # (sheep, wolf)
34+
35+
return answer
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import sys
2+
input = sys.stdin.readline
3+
4+
n = int(input()) # ์ˆ˜ ์ž…๋ ฅ ๋ฐ›๊ธฐ
5+
t, p = [0 for _ in range(n + 1)], [0 for _ in range(n + 1)]
6+
for i in range(1, n + 1):
7+
t[i], p[i] = map(int, input().split())
8+
dp = [0] * (n+1) #dp ๋ฆฌ์ŠคํŠธ ์ดˆ๊ธฐํ™”
9+
10+
for i in range(1, n+1):
11+
time = t[i]
12+
pay = p[i]
13+
day = i + time - 1
14+
dp[i] = max(dp[i], dp[i - 1]) # ์ด์ „๊นŒ์ง€์˜ ์ตœ๋Œ“๊ฐ’
15+
if day <= n:
16+
dp[day] = max(dp[day], dp[i-1]+pay)
17+
18+
print(max(dp))
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import sys
2+
input = sys.stdin.readline
3+
4+
5+
def check_winner(x, y, color):
6+
# ์˜ค๋ชฉ 4๊ฐœ ๋ฐฉํ–ฅ
7+
directions = [(-1, 0), (0, -1), (-1, -1), (-1, 1)]
8+
# (-1, 0) - ์„ธ๋กœ ๋ฐฉํ–ฅ (์œ„์ชฝ)
9+
# (0, -1) - ๊ฐ€๋กœ ๋ฐฉํ–ฅ (์™ผ์ชฝ)
10+
# (-1, -1) - ์ขŒ์ƒํ–ฅ ๋Œ€๊ฐ์„  ๋ฐฉํ–ฅ
11+
# (-1, 1) - ์šฐ์ƒํ–ฅ ๋Œ€๊ฐ์„  ๋ฐฉํ–ฅ
12+
13+
for dx, dy in directions:
14+
count = 1 # ํ˜„์žฌ ๋Œ์ด ํฌํ•จ๋œ ์—ฐ์†๋œ ๋Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์…€ ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™”
15+
16+
# ์ฃผ์–ด์ง„ ๋ฐฉํ–ฅ์œผ๋กœ ์—ฐ์†๋œ ๋Œ ๊ฐœ์ˆ˜ ์„ธ๊ธฐ
17+
nx, ny = x + dx, y + dy
18+
while 1 <= nx < 20 and 1 <= ny < 20 and board[nx][ny] == color:
19+
count += 1
20+
# ๋ฐฉํ–ฅ dx, dy๋กœ ์ด๋™ํ•˜๋ฉฐ ํ•ด๋‹น ๋ฐฉํ–ฅ์— ๊ฐ™์€ ์ƒ‰์˜ ๋Œ์ด ์žˆ๋Š” ํ•œ ๊ณ„์† ํƒ์ƒ‰
21+
nx += dx
22+
ny += dy
23+
24+
# ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœ๋„ ์—ฐ์†๋œ ๋Œ ๊ฐœ์ˆ˜ ์„ธ๊ธฐ
25+
nx, ny = x - dx, y - dy
26+
while 1 <= nx < 20 and 1 <= ny < 20 and board[nx][ny] == color:
27+
count += 1
28+
# ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœ๋„ ์ด๋™ํ•˜์—ฌ ์—ฐ์†๋œ ๋Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถ”๊ฐ€๋กœ ์…ˆ
29+
nx -= dx
30+
ny -= dy
31+
32+
# 5๊ฐœ์ผ ๊ฒฝ์šฐ๋งŒ ์Šน๋ฆฌ๋กœ ์ธ์ •
33+
if count == 5:
34+
return True
35+
36+
return False # 5๊ฐœ์˜ ๋Œ์ด ์—ฐ์†๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ
37+
38+
N = int(input().strip()) # ๋Œ์˜ ๊ฐœ์ˆ˜
39+
board = [[0] * 20 for _ in range(20)] # 19x19 ๋ฐ”๋‘‘ํŒ / ๋ฐ”๋‘‘๋Œ์ด ๋†“์ธ ์œ„์น˜ ๊ธฐ๋ก (1,1)~(19,19)
40+
41+
# ์ž…๋ ฅ๋œ ์ขŒํ‘œ์— ๋Œ์„ ๊ธฐ๋ก
42+
for i in range(N):
43+
x, y = map(int, input().strip().split()) # ๊ฐ ์ˆ˜์˜ ์ขŒํ‘œ
44+
color = 1 if i % 2 == 0 else 2 # ํ™€์ˆ˜ ๋ฒˆ์งธ ์ˆ˜: ํ‘๋Œ(1), ์ง์ˆ˜ ๋ฒˆ์งธ ์ˆ˜: ๋ฐฑ๋Œ(2)
45+
board[x][y] = color # ํ•ด๋‹น ์ขŒํ‘œ์— ๋Œ์„ ๋†“์Œ (๋ฐ”๋‘‘ํŒ ๋ฐฐ์—ด์— ๊ธฐ๋ก)
46+
47+
if check_winner(x, y, color): # ํ˜„์žฌ ๋†“์€ ๋Œ๋กœ ์ธํ•ด ์Šน๋ฆฌ๊ฐ€ ๊ฒฐ์ •๋˜๋Š”์ง€ ํ™•์ธ
48+
print(i + 1) # ์Šน๋ฆฌ๊ฐ€ ๊ฒฐ์ •๋˜๋ฉด ํ˜„์žฌ ๋ช‡ ๋ฒˆ์งธ ์ˆ˜์ธ์ง€ ์ถœ๋ ฅํ•˜๊ณ  ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ
49+
sys.exit()
50+
51+
print(-1) # ๋ชจ๋“  ๋Œ์„ ๋†“์•˜์ง€๋งŒ ์ŠนํŒจ๊ฐ€ ๊ฒฐ์ •๋˜์ง€ ์•Š์œผ๋ฉด -1 ์ถœ๋ ฅ
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
K = int(input())
2+
stack = []
3+
for i in range(K):
4+
num = int(input())
5+
stack.append(num)
6+
if num == 0:
7+
stack.pop()
8+
stack.pop()
9+
10+
print(sum(stack))

0 commit comments

Comments
ย (0)