티스토리 뷰
반응형
😅 문제
https://swexpertacademy.com/main/
🤔 문제 상황
- 회문이 가로, 세로 두가지 경우가 발생할 수 있다.
🧐 해결 전략
- 회문을 탐색하는 함수를 만들어 판별한다.
🎰 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
def palin(s):
rev = s[::-1] # s를 거꾸로 출력
if s[:len(s)//2] == rev[:len(s)//2]:
return True
return False
t = int(input()) # testcase 개수
result = [] # 결과 리스트
for _ in range(t):
n , m = map(int,input().split()) # n x n 행렬의 길이, m = 회문의 길이
nlist = []
isCheck = False
isCheck2 = False
for i in range(n): # n 행을 입력받음
nlist.append(input())
# 회문이 가로로 존재
for i in range(n):
temp = nlist[i]
for j in range(n-m+1):
if palin(temp[j:j+m]):
result.append(temp[j:j+m])
isCheck = True
isCheck2 = True
break
if isCheck :
break
if isCheck2 :
continue
# 회문이 세로로 존재
for i in range(n):
isCheck3 = False
temp = []
for j in range(n):
temp.append(nlist[j][i])
for j in range(n-m+1):
if palin(temp[j:j+m]):
result.append(''.join(temp[j:j+m]))
isCheck3 = True
break
if isCheck3 :
break
for i in range(t):
print("#{} {}".format(i+1, result[i]))
|
cs |
🧙♂️ 해설
- 우선 가로로 모든 자료를 넣고, 우선 가로를 탐색하며 회문이 나오면 탐색을 종료한다. 가로에 회문이 존재하지 않을 경우 세로로 새로운 배열을 생성하며 회문을 탐색한다.
📈 새로 학습한 것 & 실수
- 처음에 회문 함수를 만들 때, 변수를 (str, l)로 하여 함수 안에서 모든 것을 해결하려고 하다보니 오히려 복잡하였다. 함수는 깔끔하게 만들고 반복을 통해 찾는게 나을 수도 있다는 것을 알았다.
반응형
'알고리즘 학습 > 삼성 SWEA' 카테고리의 다른 글
SWEA - 구간합 [Python] (0) | 2020.08.24 |
---|---|
SWEA - 숫자 카드 [Python] (0) | 2020.08.24 |
SWEA - 전기버스 [Python] (0) | 2020.08.24 |
SWEA - 색칠하기[Python] (0) | 2020.05.11 |
SWEA - 글자수[Python] (0) | 2020.05.02 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 텀 프로젝트#백준알고리즘#Python
- 랜선자르기#이분탐색#BOJ#Python
- Triangle#Sorting#Codility#Python
- 파이썬알고리즘인터뷰#4장
- 나무자르기#BOJ#이분탐색#Python
- N으로 표현#DP#Programmers#Python
- 날짜 계산#BOJ#완전탐색#Python
- 반복수열#백준알고리즘#Python
- 토마토#백준알고리즘#Python
- 백준 알고리즘#BackTracking
- django
- NumberofDiscIntersections#Codility#Sort#Python
- 공유기 설치#BOJ#이분탐색#Python
- 섬의개수#백준알고리즘#Python
- 터틀비치#리콘#xbox#controller
- 리모컨#완전탐색#BOJ#Python
- 배열합치기#분할정복#BOJ#Python
- django#slicing
- 병든 나이트#BOJ#탐욕법#Python
- Swift#Tuples#Range
- 종이자르기#분할정복#BOJ#Python
- filter#isalnum#lower
- 미로 탐색#백준알고리즘#Python
- 암호코드#dp#BOJ#Python
- Brackets#Stacks and Queues#Codility#Python
- API#lazy#
- Distinct#Codility#Python
- PassingCars#Codility#Python
- 쿼드트리#BOJ#분할정복#Python
- 순열사이클#BOJ#Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함