Skip to content

Commit 4eac461

Browse files
authored
Merge pull request #132 from zaqquum/main
Hongjoo/1์›” 4์ฃผ์ฐจ/3๋ฌธ์ œ
2 parents 48f1dfc + d3659bc commit 4eac461

File tree

3 files changed

+153
-0
lines changed

3 files changed

+153
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
"""
2+
# [BOJ] #1202. ๋ณด์„ ๋„๋‘‘
3+
์œ ํ˜• - ๊ทธ๋ฆฌ๋”” , ์šฐ์„ ํ , ๋ฐฑ์ค€
4+
5+
- ๊ฐ€๋ฐฉ 1๊ฐœ์— ๋ณด์„ ํ•œ๊ฐœ
6+
"""
7+
import sys
8+
from collections import deque
9+
10+
# 1, jewel , bags์˜ ๊ฐ’ ์ž…๋ ฅ ๋ฐ›๊ธฐ
11+
total_jewels , total_bags = map(int, sys.stdin.readline().split())
12+
jewels = [[] for _ in range(total_jewels)]
13+
bags = [ 0 for _ in range(total_bags)]
14+
15+
for i in range(total_jewels) :
16+
jewels[i] = list(map(int, sys.stdin.readline().split()))
17+
18+
for j in range(total_bags) :
19+
bags[j] = int(sys.stdin.readline())
20+
21+
22+
23+
#2. ์ •๋ ฌ
24+
#jewel ์€ ๋น„์‹ผ ๊ฐ€๊ฒฉ-> ๊ฐ€๋ฒผ์šด ๋ฌด๊ฒŒ ์ˆœ์œผ๋กœ ์ •๋ ฌ
25+
# bags ์€ ๋ฌด๊ฒŒ๊ฐ€ ๋ฌด๊ฑฐ์šด ์ˆœ์œผ๋กœ ์ •๋ ฌ
26+
jewels = sorted(jewels , key=lambda x : ( -x[1] , x[0]))
27+
bags = sorted(bags) # max = -1
28+
29+
30+
31+
# #3. ๊ทธ๋ฆฌ๋”” - ํ˜„์žฌ ๊ฐ€์žฅ ๋น„์‹ผ jewel ์ˆœ์œผ๋กœ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ€๋ฐฉ์—์„œ ๋„ฃ๊ธฐ
32+
prices = []
33+
34+
for i in range(total_jewels) :
35+
jewel_weight , jewel_price = jewels[i]
36+
# ํ˜„์žฌ jewel ์˜ ๋ฌด๊ฒŒ๊ฐ€ ์ตœ๋Œ€ bags ๋ณด๋‹ค ๋ฌด๊ฑฐ์šฐ๋ฉด => ๋
37+
if jewel_weight > max(bags) :
38+
continue
39+
else : # ์•„๋‹ˆ๋ฉด => ๊ฐ€๋ฐฉ์— ๋ฐ”๋กœ ๋„ฃ๊ธฐ
40+
# jewel์˜ ๋ฌด๊ฒŒ์™€ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด fitํ•œ ์ตœ์ ์˜ bags ์ฐพ๊ธฐ
41+
# diff = 1000000000 ; fit_idx = -1
42+
# for k in range(len(bags)) :
43+
# curr_diff = bags[k]-jewel_weight
44+
# if curr_diff > 0 and diff > curr_diff :
45+
# diff = curr_diff ; fit_idx= k
46+
47+
for k in range(len(bags)) :
48+
if bags[k] >= jewel_weight : # ํ˜„ jewle weight๋ฅผ ๊ฐ๋‹น ๊ฐ€๋Šฅํ•œ ์ตœ์†Œ ๊ฐ€๋ฐฉ
49+
prices.append(jewel_price)
50+
bags.pop(k) # ๋‚˜๊ฐ€๊ธฐ
51+
break
52+
if len(bags) == 0 : # ๋น„์–ด์žˆ๋‹ค
53+
break # ์ข…๋ฃŒ
54+
# print(f"current bags {bags} : jewel {jewel_price} / {jewel_weight}")
55+
# print(prices)
56+
# print(f"price : {sum(prices)}")
57+
print(sum(prices))
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import sys
2+
3+
N, target = map(int , sys.stdin.readline().split())
4+
li = sorted(list(map(int, sys.stdin.readline().split())))
5+
6+
7+
# ์ตœ๋Œ€ 3๊ฐœ
8+
# 1๊ฐœ
9+
def check_fit():
10+
if target in li :
11+
return 1
12+
else : # 2๊ฐœ, 3๊ฐœ , ์•ˆ๋จ
13+
left= 0; right = N-1
14+
while left < right :
15+
if target == sum([li[left],li[right]]) :
16+
return 1
17+
elif target > sum([li[left],li[right]]):
18+
diff = target - sum([li[left],li[right]])
19+
if diff in li and diff !=li[left] and diff != li[right] :
20+
return 1
21+
else :
22+
left += 1
23+
else : # target < sum
24+
right -= 1
25+
# 3๊ฐœ ์กฐํ•ฉ
26+
return 0
27+
28+
print(check_fit())
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
2+
"""
3+
https://www.acmicpc.net/problem/1253
4+
[์กฐ๊ฑด]
5+
- ๋ฐฐ์—ด ๋‚ด ๋‹ค๋ฅธ ์›์†Œ๋“ค์˜ ํ•ฉ์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Œ
6+
- ์œ ํ˜• : two pointer
7+
-> Answer = a+b
8+
- ์ •๋ ฌ
9+
- a, b < Answer => ์Œ์ˆ˜์ผ ๊ฒฝ์šฐ์—๋Š” ์•„๋‹˜
10+
- left_point , right_point
11+
์˜ˆ์™ธ
12+
1. ์ค‘๋ณต ์›์†Œ ์กด์žฌํ•  ๊ฒฝ์šฐ
13+
6
14+
1 3 2 1 4 4
15+
- 2,3, 4, 4
16+
2. 1๊ฐœ
17+
1
18+
3
19+
-> 0
20+
3. A = 0 ์ผ๋–„
21+
3
22+
0 0 0
23+
24+
2
25+
0 0
26+
4.
27+
3
28+
1 1 1
29+
30+
6
31+
1 1 2 2 3 6
32+
-> 2,2,3
33+
34+
# ์Œ์ˆ˜์š” ?
35+
4
36+
-1 1 2 3
37+
2
38+
# ์œ ํ˜• : ์ด๋ถ„๋ถ„ํ•  , two pointer ,
39+
# ์•Œ์•„์•ผ ํ•˜๋Š” ์‚ฌ์‹ค
40+
# ์ด๋ถ„ ํƒ์ƒ‰์€ target์— ๋Œ€ํ•ด ์ž‘์„๋•Œ , ํด๋•Œ , ๊ฐ™์„๋–„ ์ฒ˜๋ฆฌ ๊ณผ์ •์„ ๋‹ค๋ฅด๊ฒŒ ๋‘ฌ์•ผ ํ•จ
41+
42+
"""
43+
44+
import sys
45+
46+
n = int(sys.stdin.readline())
47+
# ์กฐํ•ฉ ์žฌ๋ฃŒ๋“ค ๋ฐฐ์—ด๋กœ ์ž…๋ ฅ ๋ฐ›๊ธฐ & ์˜ค๋ฆ„ ์ฐจ์ˆœ ์ •๋ ฌ
48+
board = sorted(list(map(int,sys.stdin.readline().split())))
49+
good = 0 # ์ข‹์€ ์ˆ˜ ๊ฐœ์ˆ˜
50+
#1. two pointer - ์–‘์ชฝ ๋์—์„œ ์‹œ์ž‘
51+
for i in range(n) :
52+
target = board[i]
53+
left = 0 ; right = n-1
54+
while left<right : # ์„œ๋กœ ๋‹ค๋ฅธ ์ˆ˜๋ฅผ ๊ฐ€๋ฅดํ‚จ๋‹ค
55+
if target == (board[left] +board[right]) :
56+
# left ์™€ right ๊ฐ€ ๊ฐ๊ฐ target์„ ๊ฐ€๋ฅดํ‚ฌ๋•Œ -> ๊ฐ์ž ์ง„ํ–‰ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™
57+
if left == i :
58+
left += 1
59+
elif right == i :
60+
right -= 1
61+
else :
62+
good += 1
63+
break
64+
elif target < (board[left] +board[right]) : # target์ด ํ•ฉ๋ณด๋‹ค ์ž‘์„๋–„
65+
right -=1
66+
else : # target์ด ํ•ฉ๋ณด๋‹ค ํด๋•Œ
67+
left += 1
68+
print(good)

0 commit comments

Comments
ย (0)