코딩테스트/파이썬 알고리즘 문제풀이 입문
[파이썬 알고리즘 문제풀이 입문] 탐색&시뮬레이션 - 격자판 회문수
*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다.
문제
1부터 9까지의 자연수로 채워진 7*7 격자판이 주어지면 격자판 위에서 가로방향 또는 세로방향으로 길이 5자리 회문수가 몇 개 있는지 구하는 프로그램을 작성하세요. 회문수란 121과 같이 앞에서부터 읽으나 뒤에서부터 읽으나 같은 수를 말합니다.
풀이
• 답안 : Python
import sys
input = sys.stdin.readline
a = [list(map(int, input().split())) for _ in range(7)]
count = 0
for i in range(3):
for j in range(7):
# 행 (슬라이스가 가능)
tmp = a[j][i:i+5]
if tmp == tmp[::-1]:
count += 1
# 열
for k in range(2):
if a[i+k][j] != a[i+5-k-1][j]:
break
else:
count += 1
print(count)
- 5개가 담겨져 있는 묶음이 한 줄에서 이동 가능한 횟수 : 3번
- 주어진 리스트 한 줄 전체 요소 갯수 : 7개
- 하나의 묶음 안에서 앞/뒤 일치하는지 확인하는 횟수 : 2번
(행 같은 경우에는 리스트 슬라이스가 가능하지만, 열 같은 경우에는 슬라이스가 불가능하기 때문에 for문이 필요하다.)
→ 때문에 3중 for문 필요!
- 행 : 슬라이스로 접근 → 슬라이스한 것과, 뒤집은 것이 일치한다면 count를 1 증가한다.
- 열 : 인덱스로 접근 → 앞/뒤 일치하지 않으면 break로 for문을 나가게 되고, 앞/뒤 일치해서 for문이 다 돌게 되면 count를 1 증가한다.
반응형
'코딩테스트 > 파이썬 알고리즘 문제풀이 입문' 카테고리의 다른 글
[파이썬 알고리즘 문제풀이 입문] 이분탐색(결정알고리즘) & 그리디 알고리즘 - 랜선자르기 (0) | 2023.05.04 |
---|---|
[파이썬 알고리즘 문제풀이 입문] 이분탐색(결정알고리즘) & 그리디 알고리즘 - 이분검색 (0) | 2023.05.03 |
[파이썬 알고리즘 문제풀이 입문] 탐색&시뮬레이션 - 스도쿠 검사 (0) | 2023.05.03 |
[파이썬 알고리즘 문제풀이 입문] 탐색&시뮬레이션 - 봉우리 (0) | 2023.05.02 |
[파이썬 알고리즘 문제풀이 입문] 탐색&시뮬레이션 - 곶감(모래시계) (0) | 2023.04.29 |
댓글