๋ฐ์ํ
์์ ํ์ | ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ค ๊ณ์ฐ |
์๋ฎฌ๋ ์ด์ | ๋ฌธ์ ์์ ์ ์ํ ์๊ณ ๋ฆฌ์ฆ ํ ๋จ๊ณ์ฉ ์ฐจ๋ก๋๋ก ์ง์ ์ํ |
- int ์๋ฃํ ๋ฐ์ดํฐ์ ๊ฐ์์ ๋ฐ๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋
- 1,000 - 4kb
- 1,000,000 - 4mb
- 10,000,000 - 40mb
- ์๊ฐ ์ ํ, ๋ฐ์ดํฐ์ ๊ฐ์์ ๋ฐ๋ผ ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ ์ธ์ง ์ ํด์ผ ํ๋ค!
- 1์ด, 100๋ง๊ฐ ๋ฐ์ดํฐ -> O(NlogN)
์์ 4-1 (์๋ฎฌ๋ ์ด์ ) ์ํ์ข์ฐ
- ์ ํ : 1์ด, 128mb
- N x N ์ ์ฌ๊ฐํ ๊ณต๊ฐ. ๊ฐ์ฅ ์ผ์ชฝ ์ (1, 1)
๊ณํ์์๋ ํ๋์ ์ค์ ๋์ด์ฐ๊ธฐ๋ก ๊ตฌ๋ถ. L์ผR์คU์D์๋ ๊ณต๊ฐ ๋ฐ์ ๋ฌด์. - input ์ฒซ์งธ ์ค ๊ณต๊ฐ์ ํฌ๊ธฐ 1 <= N <= 100 , ๋์งธ ์ค ๊ณํ์ ๋ด์ฉ (1 <= ์ด๋ ํ์ <= 100)
- output ์ต์ข ์ ์ผ๋ก ๋์ฐฉํ ์ง์ ์ ์ขํ (X, Y)๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์ถ๋ ฅ
# ์
๋ ฅ ๋ฐ๊ธฐ N, ๊ณํ์
n = int(input())
plans = input().split()
x, y = 1, 1 # ์์์ ์ ์ ํ์
"""
L R U D ๋ฐฉํฅ๊ณผ ์ด๋ฆ ์ ์ ***
(1,1) (1,2)
(2,1) (2,2)
๋ผ์ ์ผ์ด๋ฉด dy ์์ -1
"""
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)
Point 1
L, R, U, D ๋ฐฉํฅ๊ณผ ์ด๋ฆ ์ ์ ๋ ๊ทธ๋ฅ ์ธ์๋ผ
Point 2
๊ณต๊ฐ ๋ฒ์ด๋๋ฉด continue๋ก ๋ฌด์
Point 3
x, y ๋ฅผ ๋ณํ ๋ nx, ny๋ก ๊น๋จน์ง๋ง๊ณ ๋ฐ๊ฟ์ฃผ๊ธฐ
์์ 4-2 (์์ ํ์) ์๊ฐ
- ์ ํ : 2์ด, 128mb
- N์ด ์ ๋ ฅ๋๋ฉด 00์ 00๋ถ 00์ด ~ N์ 59๋ถ 59์ด ๋ชจ๋ ์๊ฐ ์ค 3์ด ํ๋๋ผ๋ ํฌํจ๋๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ
- input N
- output 3์ด ํ๋๋ผ๋ ํฌํจ๋๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์
# input & output
h = int(input())
count = 0
# 3์ค ๋ฐ๋ณต 24x60x60
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): # str๋ณํํ๊ณ ํ์ธ
count += 1
print(count)
Point 1
00์ 00๋ถ 00์ด ~ 23์ 59๋ถ 59์ด ๊ฒฝ์ฐ -> 86,400๊ฐ์ง -> 100,000๊ฐ๋ ์๋ผ์
3์ค์ผ๋ก ์ํํด๋ ๊ด์ฐฎ๋ค ! ๋ฅผ ์์์ผ ๋จ.
Point 2
str()๋ก ๋ณํํด์ ๋์ถฉ ~ ๊น์ด๊บผ ์จ๋ ํ์ด์ฌ์ ์์์ ์ ์์๋ฃ๋๋ค..
์ค์ 2 (์๋ฎฌ๋ ์ด์ ) ์์ค์ ๋์ดํธ
- ์ ํ : 1์ด, 128mb
- 8x8 ์ขํ ํ๋ฉด L์ ํํ๋ก๋ง ์ด๋. ์ ์ ๋ฐ์ผ๋ก ๋๊ฐ ์ ์์. ํน์ 2๊ฐ์ง ๊ฒฝ์ฐ๋ก ์ด๋
1. ์ํ ๋ ์นธ, ์์ง ํ ์นธ
2. ์์ง ๋ ์นธ, ์ํ ํ ์นธ
์์์ ์ด (1,a) ์ด a,b~g,h / ํ 1,2~7,8 - input ํ์ฌ ๋์ดํธ๊ฐ ์์นํ ๊ณณ์ ์ขํ๋ฅผ ์ ๋ ฅ 'a1'
- output ์ด๋ํ ์ ์๋ ๊ฒฝ์ฐ์ ์ ์ถ๋ ฅ '2'
# input str+int
input_data = input()
row = int(input_data[1])
column = int(ord(input_data[0])) - int(ord('a')) + 1 # ๋ฌธ์ ์์คํค - a ์์คํค + 1
# ๋ ๊ฐ์ง ์ด๋๋ฐฉ๋ฒ์ ์๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์ ***
# ์ํ 2 ์์ง 1, ์์ง 2 ์ํ 1
steps = [(-2,-1),(-2, 1),(2,-1),(2,1),(1,2),(1,-2),(-1,2),(-1,-2)]
result = 0 # ๊ฐ์ง์ ๋ด์ ๊ณต๊ฐ
for step in steps:
# ์ด๋ํ๊ณ ์ ํ๋ ์์น ํ์ธ ***
nx_row = row + step[0]
nx_column = column + step[1]
# ์ด๋ ๊ฐ๋ฅํ์ง ํ์ธ ***
if nx_row >= 1 and nx_row <= 8 and nx_column >= 1 and nx_column <= 8 :
result += 1
print(result)
Point 1
์์คํค ์ฝ๋๋ก ๋ณํ + 1
Point 2
๋ ๊ฐ์ง ์ด๋๋ฐฉ๋ฒ์ ์๋ ๋ชจ๋ ๊ฒฝ์ฐ ์ ๋ฆฌ์คํธ๋ก ์์ฑ. ์ด๊ฑธ ํ๋ํ๋ ํ์ธํ๊ธฐ
Point 3
์ด๋ ๊ฐ๋ฅํ ๊ฒฝ์ฐ์๋ง ๊ฐ์ง์ ์ถ๊ฐ. and
์ค์ 3 (์๋ฎฌ๋ ์ด์ ) ๊ฒ์ ๊ฐ๋ฐ
- ์ ํ : 1์ด, 128mb
- N x M ์ ์ง์ฌ๊ฐํ, ์ก์ง or ๋ฐ๋ค, ์บ๋ฆญํฐ๋ ๋์๋จ๋ถ ์ค ํ ๊ณณ์ ๋ฐ๋ผ๋ณธ๋ค.
๋งต์ ๊ฐ ์นธ์ (A, B)๋ก ๋ํ๋.
1. ํ์ฌ ์์น, ํ์ฌ ๋ฐฉํฅ์ ๊ธฐ์ค์ผ๋ก ๋ฐ์๊ณ ๋ถํฐ ๊ฐ ๊ณณ์ ์ ํ๋ค.
2. ๊ฐ๋ณด์ง ์์ ์นธ์ด ์์ผ๋ฉด ์ ์ง, ์์ผ๋ฉด ๋ง์ ๋๋ฆฌ๊ณ 1๋จ๊ณ
3. ์ด๋ฏธ ๋ค ๊ฐ๋ดค๊ฑฐ๋ ๋ฐ๋ค๋ฉด ๋ฐฉํฅ์ ์ง, ํ ์นธ ๋ค๋ก ๊ฐ๊ณ ๋ค์ searching, ๋ค๊ฐ ๋ฐ๋ค๋ฉด stop - input
์ฒซ์งธ์ค ์ธ๋ก N>=3, ๊ฐ๋ก M<=50
๋์งธ์ค (A, B) ์๋ ์นธ ์ขํ, ๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ d ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ.
d : 0 ๋ถ 1 ๋ 2 ๋จ 3 ์
์ ์งธ์ค 0 ์ก์ง 1 ๋ฐ๋ค ๋ก ๋งต์ด ์ฃผ์ด์ง. ์ฒ์ ์บ๋ฆญํฐ ์์น๋ ๋ฌด์กฐ๊ฑด ์ก์ง - output
์ด๋์ ๋ง์น ํ ์บ๋ฆญํฐ๊ฐ ๋ฐฉ๋ฌธํ ์นธ์ ์
# input N M / A B d
n, m = map(int, input().split())
# ์ ์ฅํ๊ธฐ ์ํ ๊ณต๊ฐ initialize ํ์ *** ๊ณต๊ฐ๊ณผ ๋ฐ์์ผํ๋ ๋งต์ ๋ค๋ฅด๋ค
d = [[0] * m for _ in range(n)]
x, y, direction = map(int, input().split())
d[x][y] = 1 # ํ์ฌ์ขํ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ *** ๊น๋จน์_๋ฌธ์ ๋ฅผ ์ ์ฝ์
# input NxM info ***
array = []
for i in range(n):
array.append(list(map(int, input().split())))
# define ๋ถ ๋ ๋จ ์
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]
# ํ์ ํจ์ ๋ฐ๋ก ์ ์ ***
def turn_left():
global direction # ์ ์ญ์ผ๋ก ๋์ด์จ๋ค ***
direction -= 1
if direction == -1: # ๋ถ -> ์
direction = 3
# ์ถ๊ฐ ๋ณ์ ์ ์ *** ์ฐ์ ์์๋ ์๋ฆฌ๊ฐ 1 !
count = 1
turn_time = 0
# ํ์ฌ์ ์์น๊ฐ ์ก์ง์ด๋ฉด
while True:
turn_left()
nx = x + dx[direction]
ny = y + dy[direction]
# ๋งต ๋ฒ์ ์์์๋ง ๋์ํ๋๋ก ์กฐ๊ฑด ์ถ๊ฐ ***
if (0 <= nx < n) and (0 <= ny < m):
# ๋ณด๋ ๋ฐฉํฅ์ผ๋ก ์ด๋ํ์ ๋ ์ก์ง, ์ด๋
if d[nx][ny] == 0 and array[nx][ny] == 0:
x = nx
y = ny
d[x][y] = 1 # ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ
count += 1
turn_time = 0 # ๋๋ฆฐ๊ฑฐ ์ด๊ธฐํ
continue
# ๋ณด๋ ๋ฐฉํฅ์ผ๋ก ์ด๋ํ์ ๋ ๋ฐ๋ค, ๋๋ ค
turn_time += 1
# ์ else๋ฅผ ๋นผ์ผ ์ฝ๋๊ฐ ๋์๊ฐ๋ ๊ฑฐ์ง? ๋ฌด์จ ์์ธ๊ฐ ์์ง.. ์๋ ๋ญ ์์ด๋ ๋๊ธดํ๋๋ฐ...
# 4๋ฒ ๋๊ณ ๋ค๊ฐ ์ก์ง๋ฉด ๋ค๋ก ๊ฐ๊ธฐ
if turn_time == 4:
nx = x - dx[direction]
ny = y - dy[direction]
# ๋งต ๋ฒ์ ์์์๋ง ๋์ํ๋๋ก ์กฐ๊ฑด ์ถ๊ฐ + backํ๋๋ฐ ์ก์ง
if (0 <= nx < n) and (0 <= ny < m) and (array[nx][ny] == 0):
x = nx
y = ny
# 4๋ฒ ๋๊ณ ๋ค ๋ฐ๋ค๋ฉด ์ข
๋ฃ
else:
break
turn_time = 0
print(count)
ํ๋ค ๋ณด๋ ์ฝ๋๊ฐ ๋๋ฌ์ด๋ฐ .. ํ๋ํ๋ ์ดํดํ๋ฉฐ ์ฃผ์์ ์ผ๋ถ๋ฌ ๋ฌ์์ผ๋ ์ํด ๋ถํ๋๋ฆผ..
์๊ณ ๋ฆฌ์ฆ ์ ์ผ๋ก๋ ๋ค ๋ง์๊ณ ๋ฐฉํฅ๋ ์ ์ ์ํ๊ณ ๊ฐ์ด๋ ๋ผ์ธ์ ์ ์ก์์ผ๋ ...
์ค๋๋ง์ ์ฝํ ๋ฅผ ํ๋ค๋ณด๋ ๊น๋จน์ ๊ฒ์ ํฌ๊ฒ
- ์ ์ฅ ๊ณต๊ฐ initializing
- ๋ฐฉ๋ฌธ์ฒ๋ฆฌ = 1 (์ด๊ฑด ๋ฌธ์ ๋ฅผ ๋ ์ฝ์๋ค..)
- ์ ์ญ์ผ๋ก ์์น ๋์ด์ค๊ธฐ (์ ์ด๊ฑฐ ์ง์ง ๊น๋จน์ ๊ฒ๊ฐ๋ค)
ํฌ์ธํธ๋ฅผ ๋ค์ ์ง๊ณ ๊ธฐ์ตํ์ ...
Point 1
์์น ์ ์ฅ ๊ณต๊ฐ ≠ ๋งต. ์์น๋ ํ์ธํ๊ณ ๋งต๋ ์์ผ๋ฉด ์์น๋ฅผ ๋ฐ๋ก ์ด๊ธฐํ ํด์ฃผ์ !
Point 2
์ ๋ ฅ์ ๋ฐ๊ณ ํ์ฌ ์์น๋ฅผ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ d[x][y] = 1 ํ๋ค๋ ๊ฒ์ ์์ง๋ง์ (๋ฌธ์ ๋ฅผ ์์ฝ์)
Point 3
๊น๋จน๊ณ ์ด์ค์ผ๋ก ๋ฐ์๋๋ฐ ํจ์จ์ ์ผ๋ก ์ ๋ ฅ ๋ฐ์. array.append(list(map ใฐใฐ ))
Point 4
ํท๊ฐ๋ฆด ๊ฑฐ๋ฉด ํ๋ํ๋ ์๊ฐํด๋ณด๋ฉด์ ๋์๋จ๋ถ define ์ง์ ํ์
Point 5
'ํ์ '๊ณผ ๊ฐ์ ๋ค๋ฅธ task๊ฐ ์๋ค๋ฉด ํจ์๋ฅผ ๋ฐ๋ก ๋นผ์ฃผ์. ๊ทธ๋ฆฌ๊ณ ์ ์ญ์ ๊ผญ ์ฒดํฌ ํ ๊ฒ !
์ถ๊ฐ๋ก... ์ฝ๋๊ฐ ์ ์ฑ ์ด๋ ๋ค๋ฅธ ๋ถ๋ถ์ด ์๋๊ฐ ?
๊ธฐ์กด ์ฑ ์ฝ๋๋ก ํ๋ฉด Index error๊ฐ ๋จ๋ ๊ฒ ์ ์ !
→ ๋ณดํต ๋งต์ ์ธ๊ณฝ์ ๋ฐ๋ค๋ผ๋ ๋ฌธ์ ์ ํ์ฉ์ด ์์ด ์๋ ์ฝ๋์๋ ๋งต ๋ฒ์๋ฅผ ์ง์ ํ์ง ์์์ผ๋, ์ฝ๋ ์์ฒด๊ฐ ์๋์๊ฐ๊ณ ๋ฌดํ ์ ๋ ฅ ์ฌํ... ๊ฒฐ๊ตญ ๋งต ๋ฒ์๋ฅผ ์ง์ ํด์คฌ๋ค. ์ค๋ฌด์ ์ฝํ ๋ ๋ค๋ฅด๋ ์ด๋์ ๋ ํ์ฉ๋๊ฒ ์ฝ๋๋ฅผ ์๋ ค์ฃผ๋ ๊ฒฝ์ฐ๊ฐ ์์์ ์ธ์ง ! ํ๋ผ๊ณ ์ฑ ์ ์จ์๋ค..
GG
๋ฐ์ํ
'์ทจ์ ์ ์ํ python....(ใ ใ ) > [์ด์ฝํ ] ์ด๊ฒ์ด์ฝ๋ฉํ ์คํธ๋ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์ฝํ ] 2.5 - python ์ด๋ก (0) | 2023.06.29 |
---|---|
[์ด์ฝํ ] 0 - python math (0) | 2023.06.29 |