Ch4 Implementation 4-1
๐ ๊ตฌํ (Implementation) ์๊ณ ๋ฆฌ์ฆ
โ๋จธ๋ฆฟ์์ ์๋ ์๊ณ ๋ฆฌ์ฆ์ ์์ค ์ฝ๋๋ก ๋ฐ๊พธ๋ ๊ณผ์ โ
๋ฌธ์ ํด๊ฒฐ ๋ถ์ผ์์ ๊ตฌํ ์ ํ์ ๋ฌธ์ ๋
- ํ์ด๋ฅผ ๋ ์ฌ๋ฆฌ๋ ๊ฒ์ ์ฝ์ง๋ง ์์ค ์ฝ๋๋ก ์ฎ๊ธฐ๊ธฐ ์ด๋ ค์ด ๋ฌธ์
- ํผ์ง์ปฌ(์ธ์ด ๋ฌธ๋ฒ์ ๋ฅ์, ๋น ๋ฅธ ํ์)์ ์๊ตฌํ๋ ๋ฌธ์
์์ค ์ฝ๋๋ก ์ฎ๊ธฐ๊ธฐ ์ด๋ ค์ด ๋ฌธ์ ๋?
- ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋จํ๋ฐ ์ฝ๋๊ฐ ์ง๋์น ๋งํผ ๊ธธ์ด์ง๋ ๋ฌธ์
- ํน์ ์์์ ์๋ฆฌ๊น์ง ์ถ๋ ฅํด์ผ ํ๋ ๋ฌธ์
- ๋ฌธ์์ด์ด ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ก์ ๋ ํ ๋ฌธ์ ๋จ์๋ก ๋์ด์ ๋ฆฌ์คํธ์ ๋ฃ์ด์ผ ํ๋(ํ์ฑ์ ํด์ผ ํ๋) ๋ฌธ์
โฉ ๋์ฒด๋ก ์ฌ์ํ ์กฐ๊ฑด ์ค์ ์ด ๋ง์ ๋ฌธ์ ์ผ์๋ก ๊น๋ค๋ก์
๋ฌธ๋ฒ์ ์ ํํ ์์งํ๊ณ , ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ด์ผ ํ๋ค.
- Ex) N๊ฐ์ ์์๊ฐ ๋ค์ด ์๋ ๋ฆฌ์คํธ์์ R๊ฐ์ ์์๋ฅผ ๋ฝ์ ํ ์ค๋ก ์ธ์ฐ๋ ๋ชจ๋ ๊ฒฝ์ฐ(์์ด)๋ฅผ ๊ตฌํด์ผ ํ๋ ๋ฌธ์
itertools
์ ๊ฐ์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉํ๋ฉด ์ฝ๊ฒ ์ฝ๋๋ฅผ ์งค ์ ์๋ค. ์ด๋ ๊ณง ์ธ์ด์ ๋ฌธ๋ฒ์ ์ดํด์ ๊ฒฝํ์ด ์์ด์ผ ๋ ์ฌ๋ฆด ์ ์๋ ํด๊ฒฐ๋ฐฉ๋ฒ์ด๋ค.
์ด ์ฑ
์ โ๊ตฌํโ ์ ํ์ ์์ ํ์
, ์๋ฎฌ๋ ์ด์
์ ๋ชจ๋ ๋ฌถ์ด ๋ค๋ฃฌ๋ค.
-
์์ ํ์ (Brute Forcing) : ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ฃผ์ ์์ด ๋ค ๊ณ์ฐํ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ
-
์๋ฎฌ๋ ์ด์ (Simulation) : ๋ฌธ์ ์์ ์ ์ํ ์๊ณ ๋ฆฌ์ฆ์ ํ ๋จ๊ณ์ฉ ์ฐจ๋ก๋๋ก ์ง์ ์ํ
๐ [์์ 1] ์ํ์ข์ฐ
- ๋์ด๋: โญ
- ํ์ด ์๊ฐ: 15๋ถ
- ์๊ฐ ์ ํ: 1์ด
- ๋ฉ๋ชจ๋ฆฌ ์ ํ: 128MB
[๋ฌธ์ ]
์ฌํ๊ฐ A๋ N x N ํฌ๊ธฐ์ ์ ์ฌ๊ฐํ ๊ณต๊ฐ ์์ ์ ์๋ค. ์ด ๊ณต๊ฐ์ 1x1 ํฌ๊ธฐ์ ์ ์ฌ๊ฐํ์ผ๋ก ๋๋์ด์ ธ ์๋ค. ๊ฐ์ฅ ์ผ์ชฝ ์ ์ขํ๋ (1,1)์ด๋ฉฐ, ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ์๋ ์ขํ๋ (N,N)์ ํด๋นํ๋ค. ์ฌํ๊ฐ A๋ ์,ํ,์ข,์ฐ ๋ฐฉํฅ์ผ๋ก ์ด๋ํ ์ ์์ผ๋ฉฐ, ์์ ์ขํ๋ ํญ์ (1,1)์ด๋ค. ์ฐ๋ฆฌ ์์๋ ์ฌํ๊ฐ A๊ฐ ์ด๋ํ ๊ณํ์ด ์ ํ ๊ณํ์๊ฐ ๋์ฌ ์๋ค.
- L: ์ผ์ชฝ์ผ๋ก ํ ์นธ ์ด๋
- R: ์ค๋ฅธ์ชฝ์ผ๋ก ํ ์นธ ์ด๋
- U: ์๋ก ํ ์นธ ์ด๋
- D: ์๋๋ก ํ ์นธ ์ด๋
์ด๋ ์ฌํ๊ฐ A๊ฐ N x N ํฌ๊ธฐ์ ์ ์ฌ๊ฐํ ๊ณต๊ฐ์ ๋ฒ์ด๋๋ ์์ง์์ ๋ฌด์ํ๋ค.
๊ณํ์๊ฐ ์ฃผ์ด์ก์ ๋ ์ฌํ๊ฐ A๊ฐ ์ต์ข ์ ์ผ๋ก ๋์ฐฉํ ์ง์ ์ ์ขํ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
[์ ๋ ฅ์กฐ๊ฑด]
- ์ฒซ์งธ ์ค์ ๊ณต๊ฐ์ ํฌ๊ธฐ๋ฅผ ๋ํ๋ด๋ N์ด ์ฃผ์ด์ง๋ค. (1<=N<=100)
- ๋์งธ ์ค์ ์ฌํ๊ฐ A๊ฐ ์ด๋ํ ๊ณํ์ ๋ด์ฉ์ด ์ฃผ์ด์ง๋ค. (1<=์ด๋ํ์<=100)
[์ถ๋ ฅ ์กฐ๊ฑด]
- ์ฒซ์งธ ์ค์ ์ฌํ๊ฐ A๊ฐ ์ต์ข ์ ์ผ๋ก ๋์ฐฉํ ์ง์ ์ ์ขํ (X, Y)๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์ถ๋ ฅํ๋ค.
# ์
๋ ฅ ์์
5
R R R U D D
# ์ถ๋ ฅ ์์
3 4
# 1. ๋์ ํ์ด
n = int(input())
x, y = 1, 1
plans = input().split()
for i in plans: # ์
๋ ฅ ์ขํ ํ๋์ฉ ํ์ธํ์ฌ ์ด๋
if i == 'L' and y < 1:
y -= 1
elif i == 'R' and y < n+1:
y += 1
elif i == 'U' and x > 1:
x -= 1
elif i == 'D' and x < n+1:
x += 1
print(x, y)
# 2. ๊ต์ฌ ๋ต์
n = int(input())
x,y = 1,1
plans = input().split()
# L, R, U, D ์ ๋ฐ๋ฅธ ์ด๋๋ฐฉํฅ
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
move_types = ['L', 'R', 'U', 'D']
# ์ด๋ ๊ณํ์ ํ๋์ฉ ํ์ธ
for plan in plans:
# ์ด๋ ํ ์ขํ ๊ตฌํ๊ธฐ
for i in range(len(move_types)):
if plan == move_types[i]:
nx = x + dx[i]
ny = y + dy[i]
# ๊ณต๊ฐ์ ๋ฒ์ด๋๋ ๊ฒฝ์ฐ ๋ฌด์
if nx < 1 or ny < 1 or nx >n or ny > n:
continue
# ์ด๋ ์ํ
x,y = nx, ny
print(x, y)
-
์๋ฎฌ๋ ์ด์ ์ ํ : ์ผ๋ จ์ ๋ช ๋ น์ ๋ฐ๋ผ์ ๊ฐ์ฒด๋ฅผ ์ฐจ๋ก๋๋ก ์ด๋์ํค๊ธฐ ๋๋ฌธ์
-
์ฐ์ฐ ํ์๋ ์ด๋ ํ์์ ๋น๋ก
์ด๋ ํ์๊ฐ N๋ฒ์ธ ๊ฒฝ์ฐ ์๊ฐ ๋ณต์ก๋๋ O(N) ์ด๋ค.
๋ฌธ์ ๋ฅผ ํ์ดํ ๊ณผ์ ์ ๋ณด๋ฉด ์ข, ์ฐ, ์, ์๋ 4๊ฐ์ง ์ด๋๋ฐฉํฅ์ List๋ก ๋ง๋ค์ด์ ์ฌ์ฉํ๊ณ ์๋ค.
๊ทธ๋ฆฌ๋ ์ ํ์ ๊ฑฐ์ค๋ฆ๋ ๋ฌธ์ ์์๋ 500์, 100์, 50์, 10์์ ํํ๋จ์๋ฅผ List๋ก ๋ง๋ค์ด์ ์ฌ์ฉํ์๋๋ฐ, ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฐ๋ค์ ๋ํด์๋ ๋ฆฌ์คํธ์ ๋ด์๋๊ณ ์ ๊ทผํ๋ ๋ฐฉ์์ผ๋ก ์๊ณ ๋ฆฌ์ฆ์ ์์ฑํ๋ ๊ฒ์ด ์ข ๋ ํจ์จ์ ์ผ๋ก ํ ์ ์๋ ๊ฒ ๊ฐ๋ค.
โ๋์ ํ์ดโ ์ฒ๋ผ if๋ฌธ์ผ๋ก ์ ๊ทผํ๋ค๋ฉด ์ด๋๋ฐฉํฅ์ด ์ฌ๋ฐฉํ๋ฐฉ์ผ๋ก ๋์ด๋๋ ๊ฒฝ์ฐ์๋ ์ฝ๋๊ฐ ๊ธธ์ด์ง๊ฒ ๋๊ธฐ ๋๋ฌธ์ ๊ฐ๋ ์ฑ ์ธก๋ฉด์์๋ ์ข์ง ์์ ๋ณด์ธ๋ค.
๐ [์์ 2] ์๊ฐ
- ๋์ด๋: โญ
- ํ์ด ์๊ฐ: 15๋ถ
- ์๊ฐ ์ ํ: 2์ด
- ๋ฉ๋ชจ๋ฆฌ ์ ํ: 128MB
[๋ฌธ์ ]
์ ์ N์ด ์ ๋ ฅ๋๋ฉด 00์ 00๋ถ 00์ด๋ถํฐ N์ 59๋ถ 59์ด๊น์ง์ ๋ชจ๋ ์๊ฐ ์ค์์ 3์ด ํ๋๋ผ๋ ํฌํจ๋๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
[์ ๋ ฅ ์กฐ๊ฑด]
- ์ฒซ์งธ ์ค์ ์ ์ N์ด ์ ๋ ฅ๋๋ค. (0<=N<=23)
[์ถ๋ ฅ ์กฐ๊ฑด]
- 00์ 00๋ถ 00์ด๋ถํฐ N์ 59๋ถ 59์ด๊น์ง์ ๋ชจ๋ ์๊ฐ ์ค์์ 3์ด ํ๋๋ผ๋ ํฌํจ๋๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.
# ์
๋ ฅ ์์
5
# ์ถ๋ ฅ ์์
11475
# 1. ๋์ ํ์ด
h = int(input())
cnt = 0
for i in range(h+1):
for j in range(60):
for k in range(60):
if '3' in str(i) + str(j) + str(k): # if item in list: list ์์ ํน์ ๊ฐ ํ์ธ ๋ฐฉ๋ฒ
cnt += 1
print(cnt)
# 2. ๊ต์ฌ ํ์ด
h = int(input())
count = 0
for i in range(h+1):
for j in range(60):
for k in range(60):
# ๋งค ์๊ฐ ์์ '3'์ด ํฌํจ๋์ด ์๋ค๋ฉด ์นด์ดํธ ์ฆ๊ฐ
if '3' in str(i) + str(j) + str(k):
count += 1
print(count)
-
์์ ํ์(Brute Forcing) ์ ํ : ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ชจ๋ ๊ฒ์ฌ
-
๋ชจ๋ ์๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ํ๋์ฉ ๋ชจ๋ ์ธ์ ํธ๋ ๋ฌธ์ ์ ์ฒด ์, ๋ถ, ์ด์ ๋ํ ๊ฒฝ์ฐ์ ์ : 24 ร 60 ร 60
์ผ๋ฐ์ ์ผ๋ก ์์ ํ์ ์๊ณ ๋ฆฌ์ฆ์ ๋นํจ์จ์ ์ธ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก ์ ์ฒด ๋ฐ์ดํฐ์ ์๊ฐ 100๋ง ๊ฐ ์ดํ์ผ ๋ ์์ ํ์์ ์ฌ์ฉํ๋ฉด ์ ์ ํ๋ค.
๋๊ธ๋จ๊ธฐ๊ธฐ