코딩테스트/SW Expert Academy

swea. D3 - 1215. [S/W 문제해결 기본] 3일차 - 회문1 python

1son 2023. 11. 5. 11:28

🔗문제 링크 

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&contestProbId=AV14QpAaAAwCFAYi&categoryId=AV14QpAaAAwCFAYi&categoryType=CODE&problemTitle=&orderBy=RECOMMEND_COUNT&selectCodeLang=ALL&select-1=3&pageSize=10&pageIndex=1

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

 

 

👩‍💻 참고 블로그 

https://velog.io/@yb_engineer/Algorithm-SWEA-1215.%ED%9A%8C%EB%AC%B81-python

 

Algorithm | SWEA 1215.회문1 (python)

본 문제의 저작권은 SW Expert 아카데미에 있습니다.SWEA 1215.회문1 링크

velog.io

 

💡코드 (print문이 들어간)

#swea D3 - 1215.회문 1

for tc in range(1,11):
    #palindrome 의 길이 입력
    p=int(input())
    n=8
    arr = [list(input()) for _ in range(n)]
    cnt=0

    #가로일 때
    for i in range(0,n):
        for j in range(0,n-p+1):
            print('arr['+str(i)+']['+str(j)+':'+str(j+p)+'] == arr['+str(i)+']['+str(j)+':'+str(j+p)+']'+'[::-1]')
            print(str(arr[i][j:j+p])+ '=='+ str(arr[i][j:j+p][::-1]))
            if arr[i][j:j+p] == arr[i][j:j+p][::-1]:
                cnt+=1
    #세로일 때
    for j in range(0,n):
        for i in range(0,n-p+1):
            #세로 문장을 확인하기 위해 char 변수 생성 및 초기화
            char = ''
            #i번쨰 행부터 회문의 길이만큼 문자열을 char 변수에 저장
            for ci in range(i,i+p):
                print(char+"+= arr["+str(ci)+']['+str(j)+']')
                char += arr[ci][j]
            #char 문장과 그 역순 문장이 같으면 회문이므로, cnt에 1을 더해준다
            if char == char[::-1]:
                print(char+ '==' +char[::-1])
                cnt+=1

    print(f'#{tc} {cnt}')

 

# 가로 

 

# 세로 

 

 

이렇게 꼭 주석을 찍어봐야 알겠는 ..

 

⚠️제출 코드 

#swea D3 - 1215.회문 1
 
for tc in range(1,11):
    #palindrome 의 길이 입력
    p=int(input())
    n=8
    arr = [list(input()) for _ in range(n)]
    cnt=0
 
    #가로일 때
    for i in range(0,n):
        for j in range(0,n-p+1):
            if arr[i][j:j+p] == arr[i][j:j+p][::-1]:
                cnt+=1
    #세로일 때
    for j in range(0,n):
        for i in range(0,n-p+1):
            #세로 문장을 확인하기 위해 char 변수 생성 및 초기화
            char = ''
            #i번쨰 행부터 회문의 길이만큼 문자열을 char 변수에 저장
            for ci in range(i,i+p):
                char += arr[ci][j]
            #char 문장과 그 역순 문장이 같으면 회문이므로, cnt에 1을 더해준다
            if char == char[::-1]:
                cnt+=1
 
    print(f'#{tc} {cnt}')