๊ตฌํ ๋ฌธ์ ์ ํต์ฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ ๊ฒฝํ์ด๋ค.
๋ถ์กฑํ๋ค๋ฉด, ๊ตฌํ ์ ํ์ ๋ฌธ์ ๋ฅผ ํ ๋ ๊ฐ์ด ์ค์ง ์์ ๊ฒ์ด๋ค.
์๋ฅผ ๋ค์ด, n๊ฐ์ ์์๊ฐ ๋ค์ด ์๋ ๋ฆฌ์คํธ์์ r๊ฐ์ ์์๋ฅผ ๋ฝ์ ํ ์ค๋ก ์ธ์ฐ๋ ๋ชจ๋ ๊ฒฝ์ฐ(์์ด)๋ฅผ ๊ตฌํด์ผ ํ๋ ๋ฌธ์ ๋ฅผ ๋ง๋๋ค๊ณ ๊ฐ์ ํด๋ณด์.
๋ค์ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ฒ ์ง๋ง, ๊ฐ๋จํ๊ฒ itertools (ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ)๋ก ์ฝ๊ฒ ์งค ์๋ ์๋ค.
์ฆ, ์ธ์ด์ ๋ฌธ๋ฒ์ ์ ์ดํดํ๊ณ ๊ฒฝํ์ด ์์ด์ผ๋ง, ์๊ฐ์ ์ ํ๊ณผ ๋ฐ์์ด ๋ฐ๋ก ๋ ์ค๋ฅธ๋ค.
๊ตฌํ ์ ํ์ 2๊ฐ์ง๋ก ํ ์ ์๋ค.
์ฒซ์งธ, ์์ ํ์์ด๋ค.
- ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ฃผ์ ์์ด ๋ค ๊ณ์ฐํ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ
๋์งธ, ์๋ฎฌ๋ ์ด์ ์ด๋ค.
- ๋ฌธ์ ์์ ์ ์ํ ์๊ณ ๋ฆฌ์ฆ์ ํ ๋จ๊ณ์ฉ ์ฐจ๋ก๋๋ก ์ง์ ์ํํด์ผ ํ๋ ๋ฌธ์ ์ด๋ค
๋ฉ๋ชจ๋ฆฌ ์ ์ฝ ์ฌํญ
#1 ๊ธฐ๋ณธ์ ์ธ ์ ์ํ์ 4๋ฐ์ดํธ์ด๋ค.
ํํ ๋ฒ์๋ -2,147,483,648 ~ 2,147,438,647 ์ด๋ค.
+ ๋ ํฐ ์ ์ํ์ long long ์ด๋ฉฐ, 8๋ฐ์ดํธ์ด๋ค.
+ BigInteger(ํด๋์ค) ๋ ์๋ฃํ์ ํฌ๊ธฐ๊ฐ ๊ฐ๋ณ์ ์ด๋ฉฐ, ๋ฒ์๋ ์ ํ์ด ์๋ค
์์ ๊ธฐ์ค์ C์ C++ ๊ธฐ์ค์ด๋ฉฐ, Python ์์๋ ์๋ฃํ์ ์ง์ ํ ํ์๊ฐ ์๋ค
๋ค๋ง, ์ ํจ์ซ์์ ๋ฐ๋ผ ์ฐ์ฐ ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅด๊ฒ ๋์ฌ ์ ์๋ค๋ ์ ์ ๊ณ ๋ คํ๋ฉด ๋๋ค.
์ ํจ์ซ์ ๋ค๋ฃจ๊ธฐ
์์์ผํ ๊ฐ๋ : g, f, roundํจ์
ํ์์ ๊ฐ๋ ๋ฌธ์์ด์ ๋ง๋๋ ์ฐ์ฐ์: %
ํ์์ ๊ฐ๋ ๋ฌธ์์ด์ ๋ง๋๋ ๋ฉ์๋: format()
์์ ๊ฐ๋ ์ ํ์ฌํ๊ณ ์, ๋ค์์ ์ดํดํ์.
1) f
๋ถ๋์์ํ ์ค์ (floating point real number)
.2f : give 2 digits after the point
2) g
%f(๋ถ๋์์ํ ์ค์)์ %e (์๋ฌธ์ 'e' ์ง์ ํ๊ธฐ) ๋จ์ถํ
.1g : give 1 significant digits
.2g : give 2 significant digits
3) round
# d,f,g
print("%05d" %1)
print("%5d" % 1)
print("%5d" % 1234)
print("%.3f" % 1)
print("%.3f" % 123)
print("%.3f" %0.12345)
import math
print("%f" %math.pi)
print("%.3f" %math.pi) # f ์์์ ์ดํ๋ก 3์๋ฆฌ
print("%.3g" %math.pi) # g ์ ์ฒด ๋ฒ์๋ฅผ ํฌํจ
print(math.pi)
print(round(math.pi))
print(round(math.pi, 2))
#2. ๋ฉ๋ชจ๋ฆฌ ์ ํ - ๋ฆฌ์คํธ
์ฝ๋ฉ ํ ์คํธ์์ ์ฃผ๋ก 128 ~ 512 MB ๋ก ๋ฉ๋ชจ๋ฆฌ ์ ํ์ด ๊ฑธ๋ฆฐ๋ค. ์๋ฐฑ๋ง ๊ฐ ์ด์์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ๋ฌธ์ ๊ฐ ๋ ์ ์๋ค.
๊ทธ๋ ๊ธฐ์ int ์๋ฃํ ๋ฐ์ดํฐ ๊ฐ์ ํ์ธํด์ผ ํ๋ฉฐ, ๋ณ๋์ ์๋ฃํ์ ๋ช ์ํด์ค ํ์๊ฐ ์๋ค.
์์คํ ๋ด๋ถ์ ์ผ๋ก๋ ๋ค์ ํ์์ ๋ณด์ฌ์ฃผ๋ ๊ฒ๊ณผ ์ ์ฌํ ํฌ๊ธฐ๋งํผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์งํ๋ค.
int ์๋ฃํ์ ๋ฐ์ดํฐ ๊ฐ์์ ๋ฐ๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋
๋ฆฌ์คํธ ๊ธธ์ด๊ฐ 1000์ธ ๊ฒฝ์ฐ, 4 KB
๋ฆฌ์คํธ ๊ธธ์ด๊ฐ 1,000,000 ์ธ ๊ฒฝ์ฐ, 4 MB
๋ฆฌ์คํธ ๊ธธ์ด๊ฐ 10,000,000 ์ธ ๊ฒฝ์ฐ, 40 MB
ํ์ง๋ง, ๋ฌธ์ ๋ฅผ ํ๋ ์ต์ ํ๋ฅผ ์๊ตฌํ๋ ๊ฒ๋ณด๋ค ์๋ฒฝํ๊ฒ solve ํ ์๊ฐ์ ํ๋๊ฒ ๋ํํ ์ข์ ๊ฒ ๊ฐ๋ค.
์๊ฐ
- ์๊ฐ ์ ํ์ด 1์ด์ด๋ฉด, ๋ฐ์ดํฐ์ ๊ฐ์๊ฐ 100๋ง ๊ฐ์ผ๋, ์๊ฐ ๋ณต์ก๋๋ O(NlogN)์ด๋ด์ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํ์ด์ผ ํ๋ค.
1์ด์ 2000๋ง๋ฒ~1์ต๋ฒ ์ ๋์ ์ฐ์ฐ ์ฒ๋ฆฌํ ์ ์์ผ๋ฏ๋ก, ๊ฐ์ํ๊ธฐ~์์ฆ์ Pypy3 ๊ฐ๋ฅํจ <ํ์ด์ฌ 3๋ณด๋ค ๋น ๋ฆ
1. ๊ตฌํ - ์ํ์ข์ฐ
๋ฌธ์ :
N x N ํฌ๊ธฐ์ ์ ์ฌ๊ฐํ ๊ณต๊ฐ ์์์, ์์์ ์ ์ขํ๋ ์ข์ธก๋งจ์์ (1,1) ์ด๋ค.
๊ฐ์ฅ ์ค๋ฅธ์ชฝ ์๋ ์ขํ๋ (N,N) ์ด๋ค. ์์์ ์์ ์,ํ,์ข,์ฐ ๋ฐฉํฅ์ผ๋ก ์ด๋ํ ์ ์๋ค.
๊ณํ์์๋ ์ด๋ค ๋ฐฉํฅ์ผ๋ก ์ด๋ํ๋์ง๊ฐ ์ ํ ์๋ค.
U,D,L,R ํ๋์ ๋ฌธ์๊ฐ ๋ฐ๋ณต์ ์ผ๋ก ๋์ด์ฐ๊ธฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ํ ์๋ค.
์ ์ฌ๊ฐํ์์ ๋ฐ๊นฅ์ผ๋ก ๋๊ฐ๋ ค๋ ์์ง์์ ์ ์ธํ๋ค.
์๋ฅผ๋ค์ด, ์ฒ์์ L ํน์ U๋ฅผ ๋ง๋๋ฉด ๋ฌด์ํ๋ค.
๊ณํ์๊ฐ ์ฃผ์ด์ก์ ๋, ์์์ ์์ ์ต์ข ์ ์ผ๋ก ๋์ฐฉํ ์ง์ ์ ์ขํ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๊ธฐ
์ ๋ ฅ ์กฐ๊ฑด :
์ฒซ์งธ ์ค์ ๊ณต๊ฐ์ ํฌ๊ธฐ๋ฅผ ๋ํ๋ด๋ n์ด ์ฃผ์ด์ง(1 <= n <= 100)
๋์งธ ์ค์ ์์์ ์์ ์ด๋ํ ๊ณํ์ ๋ด์ฉ์ด ์ฃผ์ด์ง๋ค. (1 <= ์ด๋ ํ์ <= 100)
์ถ๋ ฅ ์กฐ๊ฑด :
์ฒซ์งธ ์ค์ ์์์ ์์ ์ต์ข ์ ์ผ๋ก ๋์ฐฉํ ์ง์ ์ ์ขํ๋ฅผ (X, Y)๋ผ๊ณ ํ ๋, ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ๊ฐ์ ์ถ๋ ฅํ๋ค.
์ ๋ ฅ ์์ :
5
R R R U D D
์ถ๋ ฅ ์์ :
3 4
์๋ฅผ๋ค์ด,
R ์ธ ๊ฒฝ์ฐ (1, 1) ์์ (1, 2) ๋ก ๊ฐ๊ธฐ ๋๋ฌธ์ (0, +1) ์ด๋ค
L ์ (1, 2) ์์ (1, 1)๋ก ์ด๋ํ๊ธฐ ๋๋ฌธ์, (0, -1 ) ์ด๋ค
U๋ (2,2) ์์ (1,2) ๋ก ์ด๋ํ๊ธฐ ๋๋ฌธ์, (-1, 0)์ด๋ฉฐ,
D๋ (2,2)์์ (3, 2) ๋ก ์ด๋ํ๊ธฐ ๋๋ฌธ์, (+1, 0) ์ด๋ค
์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค
# n ์ ์ฌ๊ฐํ์ ์ฐจ์์ ๋ฐ๊ธฐ
n = int(input())
x, y = 1, 1 # ์ด๊ธฐ ์์๊ฐ์ (1,1)
plans = input().split() # ์ด๋ํ ์ขํ
#U D L R ( ์ ํ ์ข ์ฐ)์ ๋ฐ๋ฅธ ์ด๋ ๋ฐฉํฅ
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
nx, ny = 0, 0
move_types = ['U', 'D', 'L', 'R']
#์ด๋ ๊ณํ์ ํ์ธ
for plan in plans:
# 1. ์ด๋ ๋จผ์ ํ๊ธฐ
# 2. ์ขํ ๊ตฌํ๊ธฐ
for i in range(len(move_types)):
if plan == move_types[i]:
nx = x + dx[i]
ny = y + dy[i]
# ๊ณต๊ฐ์ ๋ฒ์ด๋๋ ๊ฒฝ์ฐ๋ ๋ฌด์
# ์์ํ ๋, ์ข์ธก์ผ๋ก ๊ฐ๋ ๊ฒฝ์ฐ or ์๋ก ๊ฐ๋ฅ ๊ฒฝ์ฐ
# n ์ ์ฌ๊ฐํ์ ๋ฒ์ด๋ ๋
if nx < 1 or ny < 1 or nx > n or ny > n:
continue
#์ด๋ ์ค์
x, y = nx, ny
print(x, y)
์ด๋ ํ์๊ฐ n ๋ฒ์ด๋ฉด, ์๊ฐ ๋ณต์ก๋๋ O(N) ์ด๋ค.
์ฃผ์ด์ง ๋ช ๋ น(์ข์ฐ์ํ) ์ ๋ฐ๋ผ ์ด๋ํ๋ ๊ฒ์ผ๋ก๋ถํฐ '์๋ฎฌ๋ ์ด์ ' ์ ํ์ด๋ผ๊ณ ํ๋ค.
๋์ด๋๊ฐ ๋ฎ์ ๋งํผ, ๋ฐ๋์ ํ์ด์ผ ํ๋ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ์ด๋ค.
'๐๏ธ์ํํธ์จ์ด > ๐ปpython' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Python ์๊ณ ๋ฆฌ์ฆ - ๊ตฌํ 3ํ:์์ค ๋์ดํธ ์๊ณ ๋ฆฌ์ฆ (0) | 2022.04.21 |
---|---|
Python ์๊ณ ๋ฆฌ์ฆ - ๊ตฌํ 2ํ:์๊ฐ ์๊ณ ๋ฆฌ์ฆ (0) | 2022.04.20 |
Python - ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ์ ๋ณต 2ํ (0) | 2022.04.20 |
Python - ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ์ ๋ณตํ๊ธฐ 1ํ (0) | 2022.04.18 |
[๋ฐฑ์ค] 10870๋ฒ. ํผ๋ ธ๋์น์ ์ฐพ๊ธฐ(์ฌ๊ท) & ๋ธ๋ฃจํธํฌ์ค - 2798๋ฒ. ๋ธ๋์ญ (0) | 2022.04.08 |