[백준 3085] 사탕게임

2023. 4. 21. 02:01·백준 baekjoon

04-20 

 

풀이 

인접한 노드를 구하는 방법을 찾아보다가 

'델타를 이용한 상하좌우 노드 탐색' 을 해보자고 생각했다. 그전에 문제들도 델타를 이용한것처럼 보였는데 이해가 잘 되지않았다. 오늘은 한 티스토리 글을 보고 좀 이해가 가기시작했다. 

코드는 약간 그럴싸 했지만 당연 답지를 볼수밖에 

그래도 델타부분은 비슷했다 ㅎㅎ 

 

코드 


#최대 개수 세기 
def count_candy():
    row_cnt,col_cnt,row_max,col_max =1,1,-1e9,-1e9 

    #행 계산 
    for i in range(n):
        for j in range(n-1): 
            #행 기준 동일한 색상이라면 
            if candy[i][j] == candy[i][j+1]:
                row_cnt+=1 
            else: 
                row_cnt =1
            row_max=max(row_cnt,row_max) 
        row_cnt =1 
    #열 계산 

    for j in range(n): 
        for i in range(n-1): 
            #열 기준 동일한 색상이라면 
            if candy[i][j]==candy[i+1][j]:
                col_cnt +=1 
            else: 
                col_cnt=1
            col_max=max(col_cnt,col_max) 
        col_cnt=1 
        #먹을수 있는 최대 사탕개수 구하기 
    answer = max(row_max,col_max) 
    return answer 
ans=0 
 
n =int(input()) 
candy = [list(input()) for _ in range(n)]
'''
dx=[0,0,-1,1] # 좌우 
dy=[-1,1,0,0] # 상하 
'''
steps =[[-1,0],[1,0],[0,-1],[0,1]] # 상,하,좌,우 
for i in range(n):
    for j in range(n): 
        for k in range(4): 
            nx = i+steps[k][0]
            ny = j+steps[k][1]
            #보드를 벗어나면 건너뛰기 
            if nx<0 or nx>=n or ny<0 or ny>=n:
                continue
            #인접한 두 칸이 다른 색의 사탕이라면 
            if candy[i][j] != candy[nx][ny]: 
                candy[nx][ny], candy[i][j] = candy[i][j],candy[nx][ny]
                #이전의 사탕 개수와 비교하며 최댓값 생성 
                ans = max(ans,count_candy()) 
                #인접한 두 칸 원위치 
                candy[i][j], candy[nx][ny]=candy[nx][ny], candy[i][j] 
                
print(ans)

다른코드들도 좀 찾아봐야겠다. 

'백준 baekjoon' 카테고리의 다른 글

[백준 10808] 알바벳개수  (0) 2023.04.26
[백준 10988] 팰린드롬인지 확인하기  (0) 2023.04.26
[백준 17484] 진수의 달여행 (small) _ing  (0) 2023.04.20
[백준 19532] 수학은 비대면강의입니다.  (0) 2023.04.15
[백준 1436] 영화감독 숌  (0) 2023.04.14
'백준 baekjoon' 카테고리의 다른 글
  • [백준 10808] 알바벳개수
  • [백준 10988] 팰린드롬인지 확인하기
  • [백준 17484] 진수의 달여행 (small) _ing
  • [백준 19532] 수학은 비대면강의입니다.
니블
니블
  • 니블
    기록장
    니블
  • 전체
    오늘
    어제
    • 분류 전체보기 (87) N
      • 카프카 Kafka (2)
      • 데이터베이스 db (3)
      • 깃 git (4)
      • 백준 baekjoon (31)
      • 백엔드 back-end (20)
      • 점프 투 스프링부트 (8)
      • 메세지 큐 mq (3)
      • 개발도구 tool (3)
      • 레디스 Redis (3) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Message Queue
    rebase
    레디스 클러스터
    gitconfig
    사용자이름
    guard clause
    Git
    리베이스
    백준
    kafka
    2108
    mysql
    이벤트스트리밍
    SQUASH
    분산구조
    heapq
    @value
    1927
    db
    메세지큐
    redis
    EC2
    최대힙
    reids-cluster
    스프링부트
    AWS
    로거
    자바
    트러블슈팅
    분산처리
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
니블
[백준 3085] 사탕게임
상단으로

티스토리툴바