티스토리 뷰

반응형

😅 문제 

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
 
= 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
댓글