ALGORITHM/PYTHON

백준 BAEKJOON 31628번 가지 한 두름 주세요 [PYTHON/파이썬]

칼코
반응형

 

 

 

 

 

백준 BAEKJOON 31628번 가지 한 두름 주세요 [PYTHON/파이썬]


<문제 출처> (BRONZE Ⅲ)

https://www.acmicpc.net/problem/31628

 

31628번: 가지 한 두름 주세요

$10 \times 10$ 격자의 각 칸에 가지가 한 개씩 들어 있습니다. 키위새는 가로로 연속한 $10$개의 칸 혹은 세로로 연속한 $10$개의 칸에 들어 있는 모든 가지를 단 한 번 줄줄이 연결할 수 있습니다. 가

www.acmicpc.net

 

 

 

 

 

 

 

 

<풀이>

가로로 연속된 10개의 칸 혹은 세로로 연속된 10개의 칸에

가지의 색이 같은지 확인하는 문제이다.

총 100개의 가지의 색이 주어진 2차원 배열을 입력으로 받고

zip 함수를 활용하여 행과 열을 바꾼 2차원 배열을 만들었다.

 

[Python] 2차원 리스트 뒤집기를 쉽게 해주는 Zip .. 너란 녀석....ㅋ

오늘은 2차원 리스트 행과 열 바꾸기를 쉽게 처리해주는 zip 함수를 알아보자❗️ 알고리즘 문제를 풀 때 가끔 2차원 리스트 행과 열을 바꿔야 하는 경우가 있다. 물~론! zip 말고 numpy의 transpose 메

velog.io

(zip 함수는 sorzzzzy 님의 블로그를 참고하였다.)

 

가지의 색이 공통된지 확인하기 위해 나는 set 집합을 이용하였다.

가로 10개의 칸이 모두 색이 같다면 길이가 1인 결과가 나온다.

기존의 2차원 배열과 행과 열을 바꾼 2차원 배열에

연속된 가지의 색이 10개인지 확인하기 위해 따로 함수를 만들었다. (아래 코드의 setEggplant 함수)

 

2개의 배열 속에 10개의 칸에 연속된 색인 가지가 하나라도 있다면 1을 출력

그렇지 않다면 0을 출력하여서 답을 도출해냈다.

 

 

 

 

 

 

 

 

<코드>

def setEggplant(x):
    for e in x:
        check = set(e)
        if len(check) == 1:
            return True


eggplant1 = [input().split() for _ in range(10)]
eggplant2 = list(zip(*eggplant1))

result1, result2 = setEggplant(eggplant1), setEggplant(eggplant2)

if result1 or result2:
    print(1)
else:
    print(0)

 

 

 

 

 

 

 

 

 

반응형