λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
CodingTest

[Python]λ°±μ€€ 3085번::사탕 κ²Œμž„

by λ„μΊλ¦¬πŸ± 2021. 4. 29.
λ°˜μ‘ν˜•

문제:

μƒκ·Όμ΄λŠ” 어렸을 적에 "λ΄„λ³΄λ‹ˆ (Bomboni)" κ²Œμž„μ„ μ¦κ²¨ν–ˆλ‹€.

κ°€μž₯ μ²˜μŒμ— N×N크기에 사탕을 μ±„μ›Œ λ†“λŠ”λ‹€. μ‚¬νƒ•μ˜ 색은 λͺ¨λ‘ 같지 μ•Šμ„ μˆ˜λ„ μžˆλ‹€. μƒκ·Όμ΄λŠ” μ‚¬νƒ•μ˜ 색이 λ‹€λ₯Έ μΈμ ‘ν•œ 두 칸을 κ³ λ₯Έλ‹€. κ·Έ λ‹€μŒ κ³ λ₯Έ 칸에 λ“€μ–΄μžˆλŠ” 사탕을 μ„œλ‘œ κ΅ν™˜ν•œλ‹€. μ΄μ œ, λͺ¨λ‘ 같은 μƒ‰μœΌλ‘œ 이루어져 μžˆλŠ” κ°€μž₯ κΈ΄ 연속 λΆ€λΆ„(ν–‰ λ˜λŠ” μ—΄)을 κ³ λ₯Έ λ‹€μŒ κ·Έ 사탕을 λͺ¨λ‘ λ¨ΉλŠ”λ‹€.

사탕이 μ±„μ›Œμ§„ μƒνƒœκ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, 상근이가 먹을 수 μžˆλŠ” μ‚¬νƒ•μ˜ μ΅œλŒ€ 개수λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

 

μž…λ ₯:

첫째 쀄에 λ³΄λ“œμ˜ 크기 N이 주어진닀. (3 ≤ N ≤ 50)

λ‹€μŒ N개 μ€„μ—λŠ” λ³΄λ“œμ— μ±„μ›Œμ Έ μžˆλŠ” μ‚¬νƒ•μ˜ 색상이 주어진닀. 빨간색은 C, νŒŒλž€μƒ‰μ€ P, μ΄ˆλ‘μƒ‰μ€ Z, λ…Έλž€μƒ‰μ€ Y둜 주어진닀.

μ‚¬νƒ•μ˜ 색이 λ‹€λ₯Έ μΈμ ‘ν•œ 두 칸이 μ‘΄μž¬ν•˜λŠ” μž…λ ₯만 주어진닀.

 

좜λ ₯:

첫째 쀄에 상근이가 먹을 수 μžˆλŠ” μ‚¬νƒ•μ˜ μ΅œλŒ€ 개수λ₯Ό 좜λ ₯ν•œλ‹€.

 

πŸ‘‡κ°„λ‹¨  풀이 μ„€λͺ…

1. 사탕을 2차원 리슀트둜 λ°›λŠ”λ‹€.

2. 2쀑 for 문을 λŒλ©΄μ„œ κ°€λ‘œ μ–‘μ˜†μ˜ 사탕을 λ°”κΎΈκ³  λͺ‡κ°œ 먹을 수 μžˆλŠ”μ§€ 카운트 ν•œλ‹€. μ„Έλ‘œ μœ„μ•„λž˜μ˜ 사탕을 λ°”κΎΈκ³  λͺ‡κ°œ 먹을 수 μžˆλŠ”μ§€ 카운트 ν•œλ‹€. λ°”κΎΌ 둜직 μ•ˆμ—μ„œ μ •μ˜ν•œ 카운트 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•œλ‹€.

3. 2쀑 forλ¬Έ μ•ˆμ—μ„œ λͺ¨λ“  사탕을 λ°”κΎΈλ©° 카운트 ν•¨μˆ˜λ₯Ό 돌렸으면 카운트 ν•¨μˆ˜ λ‚΄μ—μ„œ κ°€μž₯ 많이 먹을 수 μžˆλŠ” 사탕 μˆ˜μ— λŒ€ν•΄μ„œλŠ” 계속 갱신이 λ˜μ—ˆκΈ° λ•Œλ¬Έμ—, ν•΄λ‹Ή 값을 좜λ ₯ ν•˜λ©΄ λœλ‹€.

 

πŸ‘‡λ‚΄ 풀이(μ •λ‹΅ μ—¬λΆ€ O) 

n = int(input())
candies=[]
ans = 1
 
for i in range(n):
    temp =[]
    temp_str = input()
    for j in range(n):
        temp.append(temp_str[j])
    candies.append(temp)
    

    
# λͺ‡κ°œ 먹을 수 μžˆλŠ”μ§€ μ°ΎλŠ” ν•¨μˆ˜
def search():
    global ans
    for i in range(n):
        cnt = 1
        for j in range(n-1):
            if candies[i][j]== candies[i][j+1]:
                cnt+=1
                ans = max(cnt,ans)
            else:
                cnt = 1
        #ans = max(cnt,ans)
        
    for i in range(n):
        cnt = 1
        for j in range(n-1):
            if candies[j][i] == candies[j+1][i]:
                cnt+=1
                ans = max(cnt,ans)
            else:
                cnt = 1
        #ans = max(cnt,ans)
        


# [λͺ¨λ“  μΈμ ‘ν•œ 두 자리 뒀집어보고 μ°ΎκΈ°]    
# κ°€λ‘œ 뒀집기
for i in range(n):
    for j in range(n-1):
        candies[i][j],candies[i][j+1] = candies[i][j+1],candies[i][j]
        search()
        candies[i][j],candies[i][j+1] = candies[i][j+1],candies[i][j]

# μ„Έλ‘œ 뒀집기
for i in range(n):
    for j in range(n-1):
        candies[j][i],candies[j+1][i] = candies[j+1][i],candies[j][i]
        search()
        candies[j][i],candies[j+1][i] = candies[j+1][i],candies[j][i]

        
print(ans)

λ°˜μ‘ν˜•

λŒ“κΈ€