판도 저장용

#1618 판도 저장용 (308)

#0frontier◆375yl3Cdme(HVEm..SaGW)2025-02-21 (금) 11:28:35

                           _ -   ̄     ‐- .
                
_, -、          /' '"        、     `  、    /´  l
              
/ r 、 }        /             ヽ       、   {   j
               
l ゝ、 リ      /'                   、_  ヽ  ヽ.__ノ   ___
         
 (`ヽt__,.ノ       〆   '    /            \    、  / ヽ   f  l
            
ヽ ヽ.     _,.〆    ./   ,'      ',       \ /  /   l  l__,.._
        
r-―''"  `ー-''"  /    '    {         :  :.   ',    \   `ー-''''"  _,.....,_ )
        
L.. -――- -,   rーj  :   { .l  '  :      j  .!    }     >⊂⊃>r''7`ヽ.
        
      / /  ', :.    l .|_ l  :.   : ハ_! ;  '     7'''"V'"  ヒr 、 ヘ
             
_,...f'=-∠.._  ハ:.    !、ト、 {\::.   /´j .ル' } /     {      j  <  j
           
>-f_,..>--<   ヾ :.  l.ヽ芹丐` ヽ /ソ '"芹丐/    〈 ヽ..____,ノ  
             
{       l    .\ ', 込ツ-―――- 込ツノ //,  ," jl .j.ト/
             
ヽ.     /     ヽ! ゝ.      '      '"| ´ イ: ハl_l l |.|
              
 ̄ ̄ ̄  / ̄ T" ̄ ヽ――.、           |  .l.イ  l.  ゝ !
.  
           ,..../   |    l   ,'    / ̄\ ´   /|  .! |  .!   |
  
       _/   .!.    :    .l    ,     /    ー イ /!  /! |  .!   |
.  
   _/      l   :    l.   ,     ./     '    ヽ_ .j / \ ト、    .!
  
 / .     ',   .l    :   .!   ,    ./   '     / ヽ/ 二 ニ |二\ | 
.  
/   ヽ    .   l.   :   !.   ,    /  . '     /    .}、/ j二ニニ\!
.  
\    ヽ   '.  .l   :  l     /   '    /      '   ヽニニニニニ\
.   
\   ヽ   '. ,.-‐ >-―'""` 、 ./  .'  ./    '    ,. -マニ>'",. <::}
.   
  \..  ヽ   _ '" ./ ,.-‐'" ー'   '   /     '    ,..'"    ', /  ,.ヽ
    
    \   ./´ / ./ .l  ,' ./ ,.'  /  , '  ,..'"      >'  / _!__
    
      \ / {  ./ ,.' : l , .>‐''''_ ‐ 、   ,.'"     > '"./  ,.'" ̄__!
    
       \.! ./ /-―::::::::::::::<´/, > '"     .>'"ニニニ/ / ,.<二ニニ,!
     
       \/::::::::>-ァ-,::::::::::ヽ.'"    .>'"ニ尼ニニ,./,イニ尼ニニ,!
      
      _-ニ\ / /./!::>'"   >'"二二二ニ尼ニニ//二二尼尼尼ニl
       
   /ニ>ィ/ /.//!   .>'"´ニ ニ 二 二 二 二尼ニ/イ二二二尼尼ニニl
       
 ,.イ,.ィ  ./   "//.'" =二 二 二 二 二 二二二 二.}二二尼/尼尼ニニl

"For the good of all of us, except the ones who are dead."
#159frontier◆375yl3Cdme(MBTJjdAp26)2025-07-13 (일) 05:21:06
# 숫자 분류
def classify(n):
if n in {1, 2, 3}:
return '123'
elif n in {4, 5}:
return '45'
elif n == 6:
return '6'
elif n == 7:
return '7'
return ''

# 방향 이름 매핑
direction_names = {
(0, 1): '→ (가로)',
(1, 0): '↓ (세로)',
(1, 1): '↘ (오른쪽 아래 대각선)',
(1, -1): '↙ (왼쪽 아래 대각선)'
}

# 분류별 연속 직선 카운트 + 정보 출력 함수
def find_lines_with_info(grid):
rows, cols = len(grid), len(grid[0])
class_grid = [[classify(n) for n in row] for row in grid]
counts = {'123': 0, '45': 0, '6': 0, '7': 0}
lines = []

# 방향 벡터: → ↓ ↘ ↙
directions = [(0,1), (1,0), (1,1), (1,-1)]
visited = set()

for r in range(rows):
for c in range(cols):
current_class = class_grid[r][c]
if not current_class:
continue
for dr, dc in directions:
line = [(r, c)]
nr, nc = r + dr, c + dc
while 0 <= nr < rows and 0 <= nc < cols and class_grid[nr][nc] == current_class:
line.append((nr, nc))
nr += dr
nc += dc
if len(line) >= 3:
key = (line[0], dr, dc, len(line))
if key not in visited:
visited.add(key)
counts[current_class] += 1
lines.append({
'class': current_class,
'start': line[0],
'direction': direction_names.get((dr, dc), f'({dr},{dc})'),
'positions': line
})
return counts, lines

# ✅ 사용자로부터 행렬 입력 받기
def read_matrix_from_input():
print("행렬을 입력하세요 (행마다 숫자를 띄어쓰기로 구분하고, 빈 줄로 종료):")
matrix = []
while True:
try:
line = input().strip()
if not line:
break
row = list(map(int, line.split()))
matrix.append(row)
except EOFError:
break
return matrix

# ✅ 실행
matrix = read_matrix_from_input()
counts, lines = find_lines_with_info(matrix)

# ✅ 출력
print("\n분류별 감지된 직선 개수:")
for group, count in counts.items():
print(f"({group}): {count}개")

print("\n감지된 직선 정보:")
for line in lines:
print(f"- 분류 ({line['class']}), 시작점 {line['start']}, 방향 {line['direction']}, 좌표들: {line['positions']}")
(최대 5MB)