์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- concurrency
- DynamicProgramming
- duno
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
- HAVIT
- 0์ด๋์ด์๋๊ธธ
- APPJAM
- URLSession
- ์ฐ์ํ์ค๋ถ๋ถ์์ด์ํฉ
- binarySearch
- SwiftUI ํํ ๋ฆฌ์ผ
- BFS
- ์ด์งํ์
- ๊ณ ๋์ kit
- SQL
- SwiftUI
- GroupBy
- ๊ธฐ์ด๋ฌธ๋ฒ
- Swift
- dfs
- GCD
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋์ ๊ณํ๋ฒ
- discardableResult
- Til
- SOPT
- algoritm
- IOS
- SwiftUI Tutorials
- algorithm
- Today
- Total
suvera-dev ๐ฅฆ
Algorithm ) Implementation ๋ณธ๋ฌธ
๐ ์ฝ๋ฉํ ์คํธ์์ ๊ตฌํ์ด๋ ? ๋จธ๋ฆฟ์์ ์๋ ์๊ณ ๋ฆฌ์ฆ์ ์์ค์ฝ๋๋ก ๋ฐ๊พธ๋ ๊ณผ์
- ๊ตฌํ ์ ํ์ ๋ฌธ์ ๋ ํ์ด๋ฅผ ๋ ์ฌ๋ฆฌ๋ ๊ฒ์ ์ฝ์ง๋ง ์์ค์ฝ๋๋ก ์ฎ๊ธฐ๊ธฐ ์ด๋ ค์ด ๋ฌธ์ ๋ฅผ ์๋ฏธํ๋ค !
ex) ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋จํ๋ฐ ์ฝ๋๊ฐ ์ง๋์น ๋งํผ ๊ธธ์ด์ง๋ ๋ฌธ์ , ํน์ ์์์ ์๋ฆฌ๊น์ง ์ถ๋ ฅํด์ผํ๋ ๋ฌธ์ , ๋ฌธ์์ด์ด ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ก์ ๋ ํ ๋ฌธ์ ๋จ์๋ก ๋์ด์ ๋ฆฌ์คํธ์ ๋ฃ์ด์ผํ๋ ๋ฌธ์ ๋ฑ
๐๐ป ์์ ํ์ , ์๋ฎฌ๋ ์ด์ ์ ํ์ ๋ชจ๋ ๊ตฌํ ์ ํ์ผ๋ก ๋ฌถ์ด์ ์ค๋ช ํ ์์ !
1. ์์ ํ์ : ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ฃผ์ ์์ด ๋ค ๊ณ์ฐํ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ
2. ์๋ฎฌ๋ ์ด์ : ๋ฌธ์ ์์ ์ ์ํ ์๊ณ ๋ฆฌ์ฆ์ ํ๋จ๊ณ์ฉ ์ฐจ๋ก๋๋ก ์ง์ ์ํํ๋ ๋ฌธ์
๐ ๊ตฌํ ์ ๊ณ ๋ คํด์ผ ํ ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ ์ฌํญ
๐ ํ์ด์ฌ์์ ๋ฆฌ์คํธ ํฌ๊ธฐ
ํ์ด์ฌ์์ ์ฌ๋ฌ ๊ฐ์ ๋ณ์๋ฅผ ์ฌ์ฉํ ๋๋ ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํ๋๋ฐ, ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํ ๋ ๊ณ ๋ คํด์ผํ๋ ์ฌํญ์ด ์๋ค !
๋ฐ๋ก ์ฝ๋ฉํ ์คํธ์ ๋ฉ๋ชจ๋ฆฌ ์ ํ !
๋์ฒด๋ก ์ฝ๋ฉ ํ ์คํธ์์๋ 128~ 512MB๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ํํ๋๋ฐ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ์ค
๋๋ก๋ ์๋ฐฑ๋ง ๊ฐ ์ด์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํด์ผํ๋ ๋ฌธ์ ๊ฐ ์ถ์ ๋๊ณค ํ๋ค. ์ด๋ด ๋๋ ๋ฉ๋ชจ๋ฆฌ ์ ํ์ ์ผ๋์ ๋๊ธฐ !
๐ฌ ํ์ด์ฌ์์๋ ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ๋ int ์ ๊ฐ์ ๋ณ๋์ ์๋ฃํ์ ๋ช ์ํด์ค ํ์๊ฐ ์์ง๋ง, ์์คํ ๋ด๋ถ์ ์ผ๋ก๋ ์๋ ํ์ ์ ์ฌํ ํฌ๊ธฐ๋งํผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์งํ๋ค !
๋ฐ์ดํฐ์ ๊ฐ์(๋ฆฌ์คํธ์ ๊ธธ์ด) | ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ |
1,000 | ์ฝ 4KB |
1,000,000 | ์ฝ 4MB |
10,000,000 | ์ฝ 40MB |
ํ์ด์ฌ์ ๋ค๋ฅธ ์ธ์ด์ ๋นํด์ ๊ตฌํ์์ ๋ณต์กํจ์ด ์ ์ ํธ์ด์ง๋ง ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋์ด ๋ง์ ๋๋ ๊ผญ ๋ฉ๋ชจ๋ฆฌ ์ ํ์ ๊ณ ๋ คํ๊ธฐ !!
๋ฆฌ์คํธ๋ฅผ ์ฌ๋ฌ ๊ฐ ์ ์ธํ๊ณ , ๊ทธ์ค์์ ํฌ๊ธฐ๊ฐ 1,000๋ง ์ด์์ธ ๋ฆฌ์คํธ๊ฐ ์๋ค๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ฉ๋ ์ ํ์ผ๋ก ๋ฌธ์ ๋ฅผ ํ ์ ์๊ฒ ๋๋ ๊ฒฝ์ฐ๋ ์๋ค๋ ์ ๊ธฐ์ตํ๊ธฐ !
๐ ์ฑ์ ํ๊ฒฝ
- ๋ณดํต์ ์ฝ๋ฉํ ์คํธ ํ๊ฒฝ์์ ์ฑ์ ์์คํ ์ ์๊ฐ ์ ํ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์ ํ
์๊ฐ ์ ํ : 1์ด
๋ฉ๋ชจ๋ฆฌ ์ ํ : 128MB
์ผ๋ฐ์ ์ธ ๊ธฐ์ ์ฝ๋ฉ ํ ์คํธ ํ๊ฒฝ์์๋ ํ์ด์ฌ์ผ๋ก ์ ์ถํ ์ฝ๋๊ฐ 1์ด์ 2,000๋ง ๋ฒ์ ์ฐ์ฐ์ ์ํํ๋ค๊ณ ์๊ฐํ๋ฉด ํฌ๊ฒ ๋ฌด๋ฆฌ๊ฐ ์๋ค !
๐ฅ ์์ 4-1 ) ์ํ์ข์ฐ
์ฌํ๊ฐ A๋ N x N ํฌ๊ธฐ์ ์ ์ฌ๊ฐํ ๊ณต๊ฐ ์์ ์ ์๋ค. ์ด ๊ณต๊ฐ์ 1 x 1 ํฌ๊ธฐ์ ์ ์ฌ๊ฐํ์ผ๋ก ๋๋์ด์ ธ์๋ค.
๊ฐ์ฅ ์ผ์ชฝ ์ ์ขํ๋ (1 , 1) ์ด๋ฉฐ, ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ์๋ ์ขํ๋ (N, N)์ ํด๋นํ๋ค. ์ฌํ๊ฐ a๋ ์, ํ , ์ข, ์ฐ ๋ฐฉํฅ์ผ๋ก ์ด๋ํ ์ ์์ผ๋ฉฐ, ์์์ขํ๋ ํญ์ (1 , 1)์ด๋ค.
์ฌํ์ a๊ฐ ์ด๋ํ ๊ณํ์ด ์ ํ ๊ณํ์๊ฐ ๋์ฌ์๋ค. ๊ณํ์์๋ ํ๋์ ์ค์ ๋์ด์ฐ๊ธฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ฌ L,R,U,D ์ค ํ๋์ ๋ฌธ์๊ฐ ๋ฐ๋ณต์ ์ผ๋ก ์ ํ์๋ค. ๊ฐ ๋ฌธ์์ ์๋ฏธ๋ ๋ค์๊ณผ ๊ฐ๋ค
L: ์ผ์ชฝ์ผ๋ก ํ์นธ ์ด๋
R: ์ค๋ฅธ์ชฝ์ผ๋ก ํ์นธ ์ด๋
U: ์๋ก ํ์นธ ์ด๋
D: ์๋๋ก ํ์นธ ์ด๋
์ด๋, ์ ์ฌ๊ฐํ์ ๊ณต๊ฐ์ ๋ฒ์ด๋๋ ์์ง์์ ๋ฌด์๋๋ค. ๊ณํ์๊ฐ ์ฃผ์ด์ก์ ๋ ์ต์ข ์ ์ผ๋ก ๋์ฐฉํ ์ง์ ์ ์ขํ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ ์์ฑ
๐ฅ ํ์ด๋ฐฉ๋ฒ
์๊ฐ๋ณต์ก๋ O(N) : ์ฐ์ฐํ์ = ์ด๋ํ์
์๋ฎฌ๋ ์ด์ ์ ํ : ์ผ๋ จ์ ๋ช ๋ น์ ๋ฐ๋ผ ๊ฐ์ฒด๋ฅผ ์ฐจ๋ก๋๋ก ์ด๋์ํด
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)
๐ฅ ์์ 4-2) ์๊ฐ
- ์ ์ N์ด ์ ๋ ฅ๋๋ฉด 00์ 00๋ถ 00์ด๋ถํฐ N์ 59๋ถ 59์ด ๊น์ง์ ๋ชจ๋ ์๊ฐ ์ค์์ 3์ด ํ๋๋ผ๋ ํฌํจ๋๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ ์์ฑํ์์ค. ์๋ฅผ ๋ค์ด 1์ ์ ๋ ฅํ์ ๋ ๋ค์์ 3์ด ํ๋๋ผ๋ ํฌํจ๋์ด ์์ผ๋ฏ๋ก ์ธ์ด์ผํ๋ ์๊ฐ์ด๋ค
- 00์ 00๋ถ 03์ด
- 00์ 13๋ถ 30์ด
๐ฅ ํ์ด๋ฐฉ๋ฒ
๋ชจ๋ ์๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ํ๋์ฉ ๋ชจ๋ ์ธ์ ์ฝ๊ฒ ํ ์ ์๋ ๋ฌธ์
=> ํ๋ฃจ๋ 86,400 ์ด๋ก, 00์ 00๋ถ 00์ด๋ถํฐ 23์ 59๋ถ 59์ด ๊น์ง ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ ์ ์์ , 1์ด์ฉ ๋๋ฆฌ๋ฉด์ ๋งค ์๊ฐ์ ๋ฌธ์์ด๋ก ๋ฐ๊พผ๋ค์ 3์ด ํฌํจ๋์ด ์๋์ง ํ์ธํ๊ธฐ ! ์๋ฅผ ๋ค์ด 03์ 20๋ถ 35์ด ์ผ๋๋ฅผ ํ์ธํ๋ค๋ฉด, '032035'๋ก ๋ง๋ค์ด์ 3์ด ํฌํจ๋์ด ์๋์ง !
(์ด๋ฐ ์ ํ์ ์์ ํ์ ์ ํ์ผ๋ก ๋ถ๋ฅ๋๊ธฐ๋ ํจ , ์์ ํ์ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ชจ๋ ๊ฒ์ฌํด๋ณด๋ ํ์ ๋ฐฉ๋ฒ)
n = int(input())
count = 0
for i in range(n + 1):
for j in range(60):
for k in range(60):
if '3' in str(i)+ str(j) + str(k):
count += 1
print(count)
โ๏ธ ์ค์ ๋ฌธ์
1๋ฒ - ์์ค์ ๋์ดํธ
ํ๋ณต ์๊ตญ์ ์์ค ์ ์์ ์ฒด์คํ๊ณผ ๊ฐ์ 8 * 8 ์ขํ ํ๋ฉด์ด๋ค. ์์ค ์ ์์ ํน์ ํ ํ ์นธ์ ๋์ดํธ๊ฐ ์ ์๋ค. ๋์ดํธ๋ ๋งค์ฐ ์ถฉ์ฑ์ค๋ฌ์ด ์ ํ๋ก์ ๋งค์ผ ๋ฌด์ ์ ์ฐ๋งํ๋ค.
๋์ดํธ๋ ๋ง์ ํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด๋์ ํ ๋์๋ L์ ํํ๋ก๋ง ์ด๋ํ ์ ์์ผ๋ฉฐ ์ ์ ๋ฐ์ผ๋ก ๋๊ฐ ์ ์๋ค.
๋์ดํธ๋ ํน์ ํ ์์น์์ ๋ค์๊ณผ ๊ฐ์ 2๊ฐ์ง ๊ฒฝ์ฐ๋ก ์ด๋ํ ์ ์๋ค.
1. ์ํ์ผ๋ก ๋ ์นธ ์ด๋ํ ๋ค์ ์์ง์ผ๋ก ํ ์นธ ์ด๋ํ๊ธฐ
2. ์์ง์ผ๋ก ๋ ์นธ ์ด๋ํ ๋ค์ ์ํ์ผ๋ก ํ ์นธ ์ด๋ํ๊ธฐ
8*8 ์ขํ ํ๋ฉด ์์์ ๋์ดํธ์ ์์น๊ฐ ์ฃผ์ด์ก์ ๋ ๋์ดํธ๊ฐ ์ด๋ํ ์ ์๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ ์์ฑ
์ด๋ , ์์ค์ ์ ์์์ ํ ์์น๋ฅผ ํํํ ๋์๋ 1๋ถํฐ 8๋ก ํํํ๋ฉฐ ์ด์ ์์น๋ฅผ ํํํ ๋์๋ a๋ถํฐ h ๋ก ํํํ๋ค.
state = input()
row = int(state[1])
column = int(ord(state[0])) - int(ord('a')) + 1
# ์ฌ๊ธฐ์ ord() ๋ ๋งค๊ฐ๋ณ์๋ก ์
๋ ฅ๋ ๋จ์ผ๋ฌธ์์ ์์คํค์ฝ๋ ๊ฐ์ ๋ฐํํ๋ค.
# ๋์ดํธ๊ฐ ์ด๋ํ ์ ์๋ 8๊ฐ์ง ๋ฐฉํฅ ์ ์
steps = [(-2, -1), (-1, -2), (1, -2), (2, -1), (2, 1), (1, 2), (-1, 2), (-2, 1)]
# 8๊ฐ์ง ๋ฐฉํฅ์ ๋ํ์ฌ ๊ฐ ์์น๋ก ์ด๋์ด ๊ฐ๋ฅํ์ง ํ์ธ
result = 0
for step in steps:
# ์ด๋ํ๊ณ ์ ํ๋ ์์น ํ์ธ
next_row = row + step[0]
next_col = column + step[1]
# ํด๋น ์์น๋ก ์ด๋์ด ๊ฐ๋ฅํ๋ค๋ฉด ์นด์ดํธ ์ฆ๊ฐ
if next_row >= 1 and next_row <= 8 and next_col >=1 and next_col <=8:
result += 1
print(result)
์์ ์ํ์ข์ฐ ๋ฌธ์ ์์๋ dx dy ๋ฆฌ์คํธ๋ฅผ ์ ์ธํ์ฌ ์ด๋ํ ๋ฐฉํฅ์ ๊ธฐ๋กํ ์ ์๋๋ก ํ์๊ณ , ์ด๋ฒ ๋ฌธ์ ์์๋ steps ๋ณ์๊ฐ ์ด๋ฐ ๊ธฐ๋ฅ์ ๋์ ํ์ฌ ์ํํ์์ ! 2๊ฐ์ง ํํ ๋ชจ๋ ์์ฃผ ์ฌ์ฉ๋๋ค !
2๋ฒ - ๊ฒ์ ๊ฐ๋ฐ
ํ๋ฏผ์ด๋ ๊ฒ์ ์บ๋ฆญํฐ๊ฐ ๋งต ์์์ ์์ง์ด๋ ์์คํ ์ ๊ฐ๋ฐ ์ค์ด๋ค. ์บ๋ฆญํฐ๊ฐ ์๋ ์ฅ์๋ 1*1 ํฌ๊ธฐ์ ์ ์ฌ๊ฐํ์ผ๋ก ์ด๋ค์ง N*M ํฌ๊ธฐ์ ์ง์ฌ๊ฐํ์ผ๋ก, ๊ฐ๊ฐ์ ์นธ์ ์ก์ง ๋๋ ๋ฐ๋ค์ด๋ค. ์บ๋ฆญํฐ๋ ๋์ ๋จ๋ถ ์ค ํ ๊ณณ์ ๋ฐ๋ผ๋ณธ๋ค
๋งต์ ๊ฐ ์นธ์ (A,B) ๋ก ๋ํ๋ผ ์ ์๊ณ , A๋ ๋ถ์ชฝ์ผ๋ก๋ถํฐ ๋จ์ด์ง ์นธ์ ๊ฐ์, B๋ ์์ชฝ์ผ๋ก ๋ถํฐ ๋จ์ด์ง ์นธ์ ๊ฐ์์ด๋ค. ์บ๋ฆญํฐ๋ ์ํ์ข์ฐ๋ก ์์ง์ผ ์ ์๊ณ , ๋ฐ๋ค๋ก ๋์ด ์๋ ๊ณต๊ฐ์๋ ๊ฐ์ ์๋ค. ์บ๋ฆญํฐ์ ์์ง์์ ์ค์ ํ๊ธฐ ์ํ ๋ฉ๋ด์ผ์ ์ด๋ฌํ๋ค
1. ํ์ฌ ์์น์์ ํ์ฌ ๋ฐฉํฅ์ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ ๋ฐฉํฅ๋ถํฐ ์ฐจ๋ก๋๋ก ๊ฐ ๊ณณ์ ์ ํ๋ค
2. ์บ๋ฆญํฐ์ ๋ฐ๋ก ์ผ์ชฝ ๋ฐฉํฅ์ ์์ง ๊ฐ๋ณด์ง ์์ ์นธ์ด ์กด์ฌํ๋ค๋ฉด, ์ผ์ชฝ ๋ฐฉํฅ์ผ๋ก ํ์ ํ ๋ค์ ์ผ์ชฝ์ผ๋ก ํ ์นธ ์ ์งํ๋ค. ์ผ์ชฝ ๋ฐฉํฅ์ ๊ฐ๋ณด์ง ์์ ์นธ์ด ์๋ค๋ฉด, ์ผ์ชฝ ๋ฐฉํฅ์ผ๋ก ํ์ ๋ง ์ํํ๊ณ 1๋จ๊ณ๋ก ๋์๊ฐ๋ค
3. ๋ง์ฝ ๋ค ๋ฐฉํฅ ๋ค ์ด๋ฏธ ๊ฐ๋ณธ ์นธ์ด๊ฑฐ๋ ๋ฐ๋ค๋ก ๋์ด ์๋ ์นธ์ธ ๊ฒฝ์ฐ์๋, ๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ์ ์ ์งํ ์ฑ๋ก ํ์นธ ๋ค๋ก ๊ฐ๊ณ 1๋จ๊ณ๋ก ๋์๊ฐ๋ค. ๋จ , ์ด๋ ๋ค์ชฝ ๋ฐฉํฅ์ด ๋ฐ๋ค์ธ ์นธ์ด๋ผ ๋ค๋ก ๊ฐ์ ์๋ ๊ฒฝ์ฐ ์์ง์์ ๋ฉ์ถ๋ค.
ํ๋ฏผ์ด๋ ์ด ๊ณผ์ ์ ๋ฐ๋ณต์ ์ผ๋ก ์ํํ๋ฉด์ ์บ๋ฆญํฐ์ ์์ง์์ ์ด์์ด ์๋์ง ํ ์คํธ ํ๋ ค๊ณ ํ๋ค. ๋งค๋ด์ผ์ ๋ฐ๋ผ ์บ๋ฆญํฐ๋ฅผ ์ด๋์ํจ ํ์, ์บ๋ฆญํฐ๊ฐ ๋ฐฉ๋ฌธํ ์นธ์ ์๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ ๋ง๋ค๊ธฐ
์ ๋ ฅ
1 ๋งต์ ์ธ๋กํฌ๊ธฐ N ๊ฐ๋กํฌ๊ธฐ M
2 ๊ฒ์ ์บ๋ฆญํฐ๊ฐ ์๋ ์นธ์ ์ขํ์ ๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ
( ๋ฐฉํฅ 0,1,2,3 ๋ถ ๋ ๋จ ์ )
3 ๋งต์ด ์ก์ง์ธ์ง ๋ฐ๋ค์ธ์ง์ ๋ํ ์ ๋ณด N๊ฐ์ ์ค์ ๋งต์ ์ํ๊ฐ ๋ถ์ชฝ๋ถํฐ ๋จ์ชฝ ์์๋๋ก, ๊ฐ ์ค์ ๋ฐ์ดํฐ๋ ์์ชฝ๋ถํฐ ๋์ชฝ ์์๋๋ก !
๋งต์ ์ธ๊ณฝ์ ํญ์ ๋ฐ๋ค ( 0 ์ก์ง, 1 ๋ฐ๋ค )
4 ์ฒ์ ์์น๋ ๋ฌด์กฐ๊ฑด ์ก์ง
๐ ์ ํ์ ์ธ ์๋ฎฌ๋ ์ด์ ๋ฌธ์ ! ์ผ์ฑ์ ์ ์ฝํ ์์ ์์ฃผ ์ถ์ ๋๋ ๋ํ์ ์ธ ์ ํ !
๋ณ๋์ ์๊ณ ๋ฆฌ์ฆ์ด ํ์ํ์ง ์์ง๋ง, ๋ฌธ์ ๊ฐ ๊ธธ๊ณ ๋ฌธ์ ๋ฅผ ๋ฐ๋ฅด๊ฒ ์ดํดํ์ฌ ์์ค์ฝ๋๋ก ์ฎ๊ธฐ๋๊ฒ ์ด๋ ต๋น !
์ฌ๊ธฐ์ ๋ฌธ์ ํ์ด์ ์ค์ํ ํ ํฌ๋ !
- ์ผ๋ฐ์ ์ผ๋ก ๋ฐฉํฅ์ ์ค์ ํด์ ์ด๋ํ๋ ๋ฌธ์ ์ ํ์์๋ dx, dy ๋ผ๋ ๋ณ๋์ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์ด ๋ฐฉํฅ์ ์ ํ๋ ๊ฒ ํจ๊ณผ์ ์ด๋ค ! .
- ํ์ฌ ์บ๋ฆญํฐ๊ฐ ๋ถ์ชฝ์ ๋ฐ๋ผ๋ณด๊ณ ์์ ๋๋ ๋ถ์ชฝ์ผ๋ก ์ด๋ํ๊ธฐ ์ํด x์ y ์ขํ๋ฅผ ๊ฐ๊ฐ dx[0], dy[0] ๋งํผ ๋ํ๋ค. => ํ์ฌ ์์น์์ (-1,0) ๋งํผ ์ด๋์ํค๊ธฐ !
๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ ๋ฌธ๋ฒ -> 2์ฐจ์ ๋ฆฌ์คํธ ์ด๊ธฐํ ํ๊ธฐ
- ํ์ด์ฌ์์ 2์ฐจ์ ๋ฆฌ์คํธ๋ฅผ ์ ์ธํ ๋๋ ์ปดํ๋ฆฌํจ์ ์ ์ด์ฉํ๋ ๊ฒ์ด ํจ์จ์ ์ด๋ผ๋ ์ !
๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ (list comprehension)
: ๋ฆฌ์คํธ ์์ ์, for ๋ฐ๋ณต๋ฌธ, if ์กฐ๊ฑด๋ฌธ ๋ฑ์ ์ง์ ํ์ฌ ๋ฆฌ์คํธ๋ฅผ ์์ฑํ๋ ๊ฒ
- [์ for ๋ณ์ in ๋ฆฌ์คํธ]
- list(์ for ๋ณ์ in ๋ฆฌ์คํธ)
>>> a = [i for i in range(10)] # 0๋ถํฐ 9๊น์ง ์ซ์๋ฅผ ์์ฑํ์ฌ ๋ฆฌ์คํธ ์์ฑ
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> c = [i + 5 for i in range(10)] # 0๋ถํฐ 9๊น์ง ์ซ์๋ฅผ ์์ฑํ๋ฉด์ ๊ฐ์ 5๋ฅผ ๋ํ์ฌ ๋ฆฌ์คํธ ์์ฑ
>>> c
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
- [์ for ๋ณ์ in ๋ฆฌ์คํธ if ์กฐ๊ฑด์]
- list(์ for ๋ณ์ in ๋ฆฌ์คํธ if ์กฐ๊ฑด์)
>>> a = [i for i in range(10) if i % 2 == 0] # 0~9 ์ซ์ ์ค 2์ ๋ฐฐ์์ธ ์ซ์(์ง์)๋ก ๋ฆฌ์คํธ ์์ฑ
>>> a
[0, 2, 4, 6, 8]
a = [i * j for j in range(2, 10)
for i in range(1, 10)]
๋ค์์ 2๋จ๋ถํฐ 9๋จ๊น์ง ๊ตฌ๊ตฌ๋จ์ ๋ฆฌ์คํธ ์์ฑํฉ๋๋ค.
โถ2์ฐจ์ ๋ฆฌ์คํธ ์ด๊ธฐํ
ํ์ด์ฌ์์ 2์ฐจ์ ๋ฆฌ์คํธ๋ฅผ ์ด๊ธฐํ ํด์ฃผ๊ณ ์ถ์ ๊ฒฝ์ฐ, ๋ฐ๋์ ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ ์ ์ด์ฉํด ์ฃผ์ด์ผ ํ๋ค.
์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ด 2์ฐจ์ ๋ฆฌ์คํธ๋ฅผ ์ด๊ธฐํ ํ๋ค๋ฉด, ๋ด๋ถ์ ์๋ ๋ฆฌ์คํธ๊ฐ ๋ชจ๋ ๊ฐ์ ๋์์ ์ฐธ์กฐํ๊ธฐ ๋๋ฌธ์ ๋ฆฌ์คํธ ๋ด๋ถ์ ๊ฐ์ ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ์๋์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํด๋ณด๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํด๋ณด์.
arr = [[0] * 5] * 5
arr[0][0] = 5
d = [[0] * m for _ in range(n)]
-> row : n , col : m [0] ์ผ๋ก ์ด๊ธฐํ !!
์ผ์ชฝ์ผ๋ก ํ์ ํ๋ ํจ์์์ global ํค์๋ ์ฌ์ฉ !
- ์ ์ํ ๋ณ์์ธ direction ๋ณ์๊ฐ ํจ์ ๋ฐ๊นฅ์์ ์ ์ธ๋ ์ ์ญ๋ณ์ ์ด๊ธฐ ๋๋ฌธ !
Python ๊ธฐ๋ณธ ๋ฌธ๋ฒ์ ์์ด pass, continue break์ ์ฐจ์ด์ ์ ์์๋ณด๊ฒ ์ต๋๋ค.
1. pass : ์คํํ ์ฝ๋๊ฐ ์๋ ๊ฒ์ผ๋ก ๋ค์ ํ๋์ ๊ณ์ํด์ ์งํํฉ๋๋ค.
2. continue : ๋ฐ๋ก ๋ค์ ์๋ฒ์ loop๋ฅผ ์ํํฉ๋๋ค.
3. break : ๋ฐ๋ณต๋ฌธ์ ๋ฉ์ถ๊ณ loop ๋ฐ์ผ๋ก ๋๊ฐ๋๋กํฉ๋๋ค.
# N, M ์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์
๋ ฅ๋ฐ๊ธฐ
n,m = map(int, input().split())
# ๋ฐฉ๋ฌธํ ์์น๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๋งต์ ์์ฑํ์ฌ 0์ผ๋ก ์ด๊ธฐํ
d = [[0]* m for _ in range(n)]
# ํ์ฌ ์บ๋ฆญํฐ์ x์ขํ, y ์ขํ, ๋ฐฉํฅ์ ์
๋ ฅ๋ฐ๊ธฐ
x, y, direction = map(int, input().split())
d[x][y] = 1 # ํ์ฌ ์ขํ ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ
# ์ ์ฒด ๋งต ์ ๋ณด๋ฅผ ์
๋ ฅ๋ฐ๊ธฐ
array = []
for i in range(n):
array.append(list(map(int, input().split())))
# ๋ถ, ๋, ๋จ, ์ ๋ฐฉํฅ ์ ์
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]
# ์ผ์ชฝ์ผ๋ก ํ์
def turn_left():
global direction
direction -= 1
if direction == -1:
direction = 3
# ์๋ฎฌ๋ ์ด์
์์
count = 1
turn_time = 0
while True:
# ์ผ์ชฝ์ผ๋ก ํ์
turn_left()
nx = x + dx[direction]
ny = y + dy[direction]
# ํ์ ํ ์ดํ ์ ๋ฉด์ ๊ฐ๋ณด์ง ์์ ์นธ์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ ์ด๋
if d[nx][ny] == 0 and array[nx][ny] == 0:
d[nx][ny] = 1
x = nx
y = ny
count += 1
turn_time = 0
continue
# ํ์ ํ ์ดํ ์ ๋ฉด์ ๊ฐ๋ณด์ง ์์ ์นธ์ด ์๊ฑฐ๋ ๋ฐ๋ค์ธ ๊ฒฝ์ฐ
else:
turn_time += 1
# ๋ค ๋ฐฉํฅ ๋ชจ๋ ๊ฐ ์ ์๋ ๊ฒฝ์ฐ
if turn_time == 4:
nx = x - dx[direction]
ny = y - dy[direction]
# ๋ค๋ก ๊ฐ์ ์๋ค๋ฉด ์ด๋ํ๊ธฐ
if array[nx][ny] == 0:
x = nx
y = ny
# ๋ค๊ฐ ๋ฐ๋ค๋ก ๋งํ์๋ ๊ฒฝ์ฐ
else:
break
turn_time = 0
# ์ ๋ต ์ถ๋ ฅ
print(count)
'Algorithm > CodingTest - Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Algorithm) DFS/BFS ์ค์ ๋ฌธ์ (0) | 2022.04.02 |
---|---|
Algorithm) DFS/BFS (0) | 2022.04.02 |
Algorithm) ์๋ฃ๊ตฌ์กฐ ๊ธฐ์ด (Feat. DFS์ BFS์ ๋ค์ด๊ฐ๊ธฐ ์ ..) (1) | 2022.04.01 |
Algorithm ) Greedy (2) (2) | 2022.02.06 |
Algorithm ) Greedy (0) | 2022.02.05 |