์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ ์‹ค์Šต

์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ ์‹ค์Šต - [3] ๋ฐฐ์—ด ์‹ค์Šต ๋ฌธ์ œ (๋‹ฌํŒฝ์ด ๋ฌธ์ œ, ๋Œ€๊ฐ์„  ๋ฐฉํ–ฅ ์ˆซ์ž์ถœ๋ ฅ) (2)

Mainyoung 2022. 1. 24. 23:25

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๊ฐœ๋งŒ ์ž…๋ ฅ๋˜๋ฉด์„œ ์ˆœ์ฐจ์ ์œผ๋กœ ์ž˜ ์ž…๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

728x90