[문제]
https://www.acmicpc.net/problem/2508
[풀이]
우선 사탕 입력을 box 리스트에 넣어주었다. box를 출력하면 ['.>o<', 'v.^.', 'ooo.', '^.^.', '>o<<'] 이렇게 출력이 된다.
1. >o< 모양의 사탕 구하기
가로로 되어있는 사탕을 구하는 건 쉽다. 행렬로 생각하면 box는 5행 4열이기 때문에 가로로 세개씩 묶는다면(사탕의 가로 모양 >o<) '열 수 - 2' 한만큼 비교를 하게 된다. 한 행당 3문자씩 슬라이싱 했을 때의 값이 '>o<'와 같다면 candy 값을 1 증가시켜 주었다.
2. vo^ 모양의 사탕 구하기
익숙한 형태인 가로로 비교하는 것이 아닌 세로로 비교해야 하는 문제이다. 이번에는 행을 세 개씩 묶어 검사해야 되기 때문에 '행 수 - 2' 한 만큼 열씩 검사를 해준다. 위의 필기처럼 box[0][0] + box[1][0] + box[2][0] 한 값이 'vo^' 이면 사탕이기 때문에 규칙성을 찾아 i와 j로 치환시켜준다.
[코드]
if __name__ == '__main__':
for _ in range(int(input())):
blank = input()
r, c = map(int, input().split())
candy = 0
box = []
for _ in range(r):
box += input().split()
# '>o<' 모양의 사탕이 있는지 확인
for i in range(r):
for j in range(c - 2):
if box[i][j:j+3] == '>o<':
candy += 1
# 'vo^' 모양의 사탕이 있는지 확인
for i in range(r-2):
for j in range(c):
vertical = box[i][j] + box[i+1][j] + box[i+2][j]
if vertical == 'vo^':
candy += 1
print(candy)
'문제풀이 > BOJ' 카테고리의 다른 글
[Python] BOJ/백준 1475번 방 번호 (0) | 2021.06.24 |
---|---|
[Python] BOJ/백준 2435번 기상청 인턴 신현수 (0) | 2021.06.23 |
[Python] BOJ/백준 2711번 오타맨 고창영 (0) | 2021.06.21 |
[Python] BOJ/백준 2896번 무알콜 칵테일 (0) | 2021.06.21 |
[Python] BOJ/백준 1453번 피시방 알바 (0) | 2021.06.21 |