์๋ฃ๊ตฌ์กฐ ๋ฐ ์ค์ต - [3] ๋ฐฐ์ด ์ค์ต ๋ฌธ์ (๋ฌํฝ์ด ๋ฌธ์ , ๋๊ฐ์ ๋ฐฉํฅ ์ซ์์ถ๋ ฅ) (2)
N x N (1≤N≤100) ํฌ๊ธฐ์ ํ๋ ฌ์ 1 ~ N² ์ ์๋ฅผ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ฐจ๋ก๋ก ์์์๋ถํฐ → ๋ฐฉํฅ๊ณผ ← ๋ฐฉํฅ์ ๋ฒ๊ฐ์ ๊ฐ๋ฉด์ ์ฑ์ด ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ์์ค.
์์ด๋์ด
๊ฐ์ฅ ๋จผ์ 1์ด์์ ๊ท์น์ ์ฐพ์ผ๋ ค๊ณ ๋ ธ๋ ฅํ๋ค. (1,1)์๋ 1 , (2,1)์๋ 8 , (3,1)์๋ 9, (4,1)์๋ 16 ...
N์ ๊ด์ ์์ ๋ณด๋ฉด 1, 2*N, 2*N+1, 4*N... ์ง์ ํ๊ณผ ํ์ ํ์ ๋ณด๋ฉด
1, 2N+1,4N+1,...
2N,4N,...
์ผ๋ก ์งํ๋๋ฏ๋ก case๋ฅผ ๋๋์๋ค.
์ฝ๋
N = int(input())
k=1
for i in range(N):
if i%2==0:
print(f" {k} {k+1} {k+2} {k+3}")
k= k+N+N-1
if i%2==1:
print(f" {k} {k-1} {k-2} {k-3}")
k+=1
๋ฐฐ์ด์ ๊ตฌ์ฑํด์ ํ๋ฉด k๋ฅผ ์ธ๋ฑ์ค๋ก ๋ฃ์ผ๋ฉด ๋๋ค.
N x M (1≤N, M≤100) ํฌ๊ธฐ์ ํ๋ ฌ์ 1 ~ MN ์ ์๋ฅผ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋์ ํ์ผ๋ก ์ฑ์ด ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ์์ค.
์์ด๋์ด
๊ณผ์ ์ ํ๋ํ๋ ์ ์ด๋ณด์๋ค. ๋ช๊ฐ์ง ํจํด์ด ๋ณด์ด๋๋ฐ
1. ๋ฐฉํฅ์ด ์ฐ, ํ, ์ข, ์ ์ ๋ฐ๋ณตํ๋ฉฐ ์ซ์๊ฐ ์ ๋ ฅ๋๋ค.
2. ์ข์ฐ, ์ํ๊ฐ ์ง์ ์ด๋ฃจ๋ฉฐ ํ๋ฒ ์ ๋ ฅ๋ ์๋ก ๋ค์๋ฒ์ ์ ๋ ฅ๋๋ ๊ฐฏ์๊ฐ 1๊ฐ์ฉ ๊ฐ์ํ๋ค.
์ ์ง์คํ์ฌ ์ฝ๋๋ฅผ ๊ตฌ์ฑํ๋ค.
์ฝ๋
dir= [ 0,1,2,3] # 0์ ์ฐ์ธก, 1์ ์๋, 2๋ ์ข์ธก, 3์ ์์ชฝ
N,M = input().split()
N = int(N); M = int(M)
tot = N*M
a = []
b=[]
for a1 in range(N):
a.append(list(range(0,M)))
k=1;i=0;j=-1
tmp = dir[0] #๊ฐ์ฅ๋จผ์ ์ฐ์ธก์ผ๋ก ๋๋ค.
N=N-1
while k<=tot: # k๊ฐ N*M๊น์ง ๋๋ค
if tmp==0: #์ฐ์ธก์ผ๋ก ๊ฐ์ผํ ์์๋ฉด
for _ in range(M): # ์ซ์ ๋ฐ๋ณต์
๋ ฅ
j=j+1
#print(i,j)
a[i][j]=k
#print(f"a[{i}][{j}]: {k}")
#print(a)
k=k+1
tmp = dir[1] #๋ฐฉํฅ ์ ํ
M=M-1
#print('------------')
elif tmp ==1: #์๋๋ก ๊ฐ ์์
for _ in range(N):
i=i+1
#print(i,j)
a[i][j] = k
#print(f"a[{i}][{j}]: {k}")
#print(a)
k=k+1
N=N-1
tmp = dir[2] #๋ฐฉํฅ ๋ณ๊ฒฝ
#print('------------')
elif tmp ==2: #์ข๋ก ๊ฐ ์์
for _ in range(M):
j=j-1
#print(i,j)
a[i][j] = k
#print(f"a[{i}][{j}]: {k}")
#print(a)
k=k+1
M=M-1
tmp = dir[3] #๋ฐฉํฅ ๋ณ๊ฒฝ
#print('------------')
elif tmp == 3: #์๋ก ๊ฐ ์์
for _ in range(N):
i=i-1
#print(i,j)
a[i][j] = k
#print(f"a[{i}][{j}]: {k}")
#print(a)
k=k+1
N=N-1
tmp = dir[0] #๋ค์ ์ฐ์ธก์ผ๋ก ๋ฐฉํฅ์ ํ
#print('------------')
print(a[0])
print(a[1])
print(a[2])
print(a[3])
์ค๊ฐ์ค๊ฐ ์ถ๋ ฅ์ ํ์ธํ๋๋ผ print๋ฌธ์ ๋ง์ด ๋ฃ์ด๋จ๋ค... ๋คํํ ์ ์์ ์ผ๋ก ์ถ๋ ฅ๋์๋ค.
N x M (1≤N, M≤100) ํฌ๊ธฐ์ ํ๋ ฌ์ 1 ~ MN ์ ์๋ฅผ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด โ ๋๊ฐ์
๋ฐฉํฅ์ผ๋ก ์ฑ์ด ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ์์ค.
์์ด๋์ด
์ฝ๋
####๋ฐฐ์ด ์ด๊ธฐํ####
N,M = input().split()
N = int(N); M = int(M)
tot = N*M
a = []
for a1 in range(N):
b=[]
for _ in range(M):
b.append(0)
a.append(b)
#----------------------------------
num=0
cnt=0
for i in range(N*M): #์
๋ ฅ๋ ์ซ์ ๊ฐฏ์
if cnt>=N*M: #์ซ์ ๋์ด๊ฐ๋ฉด ๋ธ๋ ์ดํฌ
break
else: # ์ซ์ ์๋์์ผ๋ฉด
for j in range(N): #์ต๋ ๋๊ฐ์ ๊ฐฏ์๊ฐ N๊ฐ์ด๋ฏ๋ก N๋ฒ ๋ฐ๋ณต / j๋ 0,1,2,3๋ฐ๋ณต
k=i-j #k๋ 0 / 1 0 / 2 1 0 / 3 2 1 0 / 4 3 2 1 ...์์ผ๋ก ์ฆ๊ฐํจ
if k>=0 and k<M: # ๊ฒฝ๊ณ์กฐ๊ฑด ์ ์
num+=1
a[j][k] = num # ์กฐ๊ฑด์ ํด๋น๋๋ฉด ๋ฐฐ์ด์ ์
๋ ฅ
cnt+=1 # ์
๋ ฅ๋ ๊ฐฏ์ ์นด์ดํธ
a
์๋ฅผ ๋ค์ด N=4, M=5๋ผ๊ณ ํ์.
N x M์ ์ซ์๋ฅผ ์ฑ์ธ ๋ ๋๊ฐ์ ๋ฐฉํฅ์ผ๋ก ์ซ์๊ฐ 1๊ฐ,2๊ฐ,...์ ๋ ฅ๋๋๋ฐ ์ด๋ ๋๊ฐ์ ๋ฐฉํฅ์ผ๋ก ์ฐ์๋๊ฒ ์ ํ ์ ์๋ ์ซ์์ ๊ฐฏ์๋ N๊ฐ์ด๋ค.
๋จผ์ N*M๋ฒ์ ๋ฐ๋ณต๋ฌธ์ ๋๋ค. ์ดํ ์ต๋ ๋๊ฐ์ ์ซ์ ๊ฐฏ์๋ N๊ฐ ์ด๋ฏ๋ก N๋ฒ ๋ฐ๋ณต๋ฌธ์ ๋๋ฆฐ๋ค.
i๊ฐ ํฌํจ๋ ๋ฐ๋ณต๋ฌธ์ ๋์๋ก i๋ 0,1,2,3... ์ฆ๊ฐํ๊ณ j๋ 0,1,2,3๋ง ๋ฐ๋ณตํ๋ค. k = i-j๋ก ์ ์ํ๋ฉด์ k๋ ๋๊ฐ์ ๊ฐฏ์๋ ์ฆ๊ฐํ๋ฉด์ 0 / 1 0 / 2 1 0 / 3 2 1 0 / 4 3 2 1 ...์์ผ๋ก ๋งจ์ฒ์์ ์ค๋ ๊ฐ์ด 1์ฉ ์ปค์ง๋ค. ๊ฒฝ๊ณ์กฐ๊ฑด์ ์ค์ ํด์ฃผ๋ฉด ์ต๋ N๊ฐ๋ง ์ ๋ ฅ๋๋ฉด์ ์์ฐจ์ ์ผ๋ก ์ ์ ๋ ฅ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.