[SWEA|파이썬] 1215. [S/W 문제해결 기본] 3일차 - 회문1 (D3)

2023. 5. 8. 23:09·Problem Solving/SWEA
반응형
문제

https://tinyurl.com/2zua4dgn

 

SW Expert Academy

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

swexpertacademy.com

 

 

🐍파이썬
T = 10
for test_case in range(1, T+1):
    letter = int(input())
    pan = [list(input()) for _ in range(8)]
    cnt = 0
    #가로(행이동)
    for r in range(8):
        #회문 생성 횟수
        for c in range(8-letter+1):
            #회문 길이만큼 슬라이싱
            if pan[r][c:c+letter] == pan[r][c:c+letter][::-1]:
                cnt += 1
    #세로(열이동)
    for c in range(8):
        for r in range(8-letter+1):
            char = ''
            #r번째 행부터 회문의 길이에 해당하는 회문을 char에 넣기
            for r2 in range(r, r+letter):
                char += pan[r2][c]
            if char == char[::-1]:
                cnt += 1
    print("#{} {}".format(test_case, cnt))

행과 열을 바꾸어 새로운 배열을 만들어 내어 풀이 진행

import math

for test_case in range(1, 11):
    answer = 0
    hoi = int(input())
    pan = []
    
    for i in range(8):
        pan.append(list(input().rstrip()))
    pan2 = list(zip(*pan))	#pan의 행과 열을 바꾼 배열
    
    for i in range(8):
        for j in range(9-hoi):
            p_list = pan[i][j:hoi + j]	#pan1의 hoi개 글자 선택(가로 확인)
            p_list2 = pan2[i][j:hoi + j]	#pan1의 hoi개 글자 선택(세로 확인)
            start = 0	#글자를 가리킬 포인터(시작)
            end = hoi - 1	#글자를 가리킬 포인터(마지막 글자)
            
            #비교횟수
            #홀수면 hoi//2+1이고 짝수면 hoi//2번 확인해야 하므로 
            #hoi/2를 반올림한 만큼 비교하도록 처리
            for _ in range(int(math.ceil(hoi/2))):	
                if p_list[start] != p_list[end]:	#동일한 글자가 아니면 회문이 아님
                    break
                start += 1
                end -= 1	#포인터를 옮겨가며 확인
            else:	#for문을 진행하는 동안 break되지 않은 경우 해당 문자열은 회문
                answer += 1

            start2 = 0
            end2 = hoi - 1
            for _ in range(int(math.ceil(hoi/2))):
                if p_list2[start2] != p_list2[end2]:
                    break
                start2 += 1
                end2 -= 1
            else:
                answer += 1

    print("#{} {}".format(test_case, answer))

 

💡 행과 열 바꾸기

pan2 = list(zip(*pan))

 

pan = [['C', 'B', 'B', 'C', 'B', 'A', 'A', 'B'], 

['C', 'C', 'C', 'B', 'A', 'B', 'C', 'B'], 

['C', 'A', 'A', 'A', 'A', 'C', 'A', 'B'], 

['B', 'A', 'C', 'C', 'C', 'C', 'A', 'C'], 

['A', 'A', 'B', 'C', 'B', 'B', 'A', 'C'], 

['A', 'C', 'A', 'A', 'C', 'A', 'B', 'C'], 

['B', 'C', 'C', 'B', 'A', 'A', 'B', 'C'], 

['A', 'B', 'B', 'B', 'C', 'C', 'A', 'A']]

 

pan2 =  [('C', 'C', 'C', 'B', 'A', 'A', 'B', 'A'), 

('B', 'C', 'A', 'A', 'A', 'C', 'C', 'B'), 

('B', 'C', 'A', 'C', 'B', 'A', 'C', 'B'), 

('C', 'B', 'A', 'C', 'C', 'A', 'B', 'B'), 

('B', 'A', 'A', 'C', 'B', 'C', 'A', 'C'), 

('A', 'B', 'C', 'C', 'B', 'A', 'A', 'C'), 

('A', 'C', 'A', 'A', 'A', 'B', 'B', 'A'), 

('B', 'B', 'B', 'C', 'C', 'C', 'C', 'A')]

 

👇 리스트 조작법 더 알아보기

https://tinyurl.com/2nhrr6nn

 

python__[2차원 리스트 90도 회전, 행과 열 바꾸기]

가끔 코딩테스트 문제를 풀다보면, 약간의 트릭? 기술?을 쓰면 편한 부분들이 있다.오늘 작성하는 부분들이 바로 그런 것들이다. 알면 너무 편하고, 모르면 쌉고생하는 것들...바로 ㄱㄱ해보자lis

velog.io

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'Problem Solving > SWEA' 카테고리의 다른 글

[SWEA|파이썬] 1220. [S/W 문제해결 기본] 5일차 - Magnetic (D3)  (0) 2023.05.10
[SWEA|파이썬] 2817. 부분 수열의 합 (D3)  (0) 2023.05.09
[SWEA|파이썬] 1209. [S/W 문제해결 기본] 2일차 - Sum (D3)  (0) 2023.05.09
[SWEA|파이썬] 2805. 농작물 수확하기 (D3)  (0) 2023.05.08
[SWEA|파이썬] 2806. N-Queen (D3)  (1) 2023.05.07
[SWEA|파이썬] 1208. [S/W 문제해결 기본] 1일차 - Flatten (D3)  (0) 2023.05.07
'Problem Solving/SWEA' 카테고리의 다른 글
  • [SWEA|파이썬] 2817. 부분 수열의 합 (D3)
  • [SWEA|파이썬] 1209. [S/W 문제해결 기본] 2일차 - Sum (D3)
  • [SWEA|파이썬] 2805. 농작물 수확하기 (D3)
  • [SWEA|파이썬] 2806. N-Queen (D3)
청량리 물냉면
청량리 물냉면
프로그래밍 공부를 하고 있습니다. 공부 내용 정리 겸 정보 공유를 목적으로 합니다.
    반응형
  • 청량리 물냉면
    노력중인 블로그
    청량리 물냉면
  • 전체
    오늘
    어제
    • 분류 전체보기 (505)
      • 프로그래밍 (41)
        • Programming (1)
        • C | C++ (6)
        • Java (28)
        • Python (5)
      • 웹 프로그래밍 (108)
        • HTML | CSS (5)
        • JavaScript | TypeScript (41)
        • React (25)
        • Vue.js (0)
        • Next.js (18)
        • Spring & Spring Boot (13)
        • JSP & Servlet (1)
        • DB (4)
      • 웹 프로젝트 (77)
        • 웹 프로젝트 (22)
        • 🥨스낵몰 (3)
        • 👨‍👨‍👧‍👧소셜 가계부 (26)
        • 🌜꿈 일기장 (11)
        • 🔮포트폴리오 사이트 (11)
        • 🏃‍♂️팀 프로젝트: 일정관리 프로그램 (0)
        • 📈팀 프로젝트: AI기반 주식 분석 플랫폼 (0)
        • 😺Just Meow It: 조언 사이트 (2)
        • 📕Workly: 교대근무 다이어리 (1)
      • 앱 프로그래밍 (26)
        • Flutter (24)
        • Kotlin (2)
      • Problem Solving (166)
        • 백준 (52)
        • 프로그래머스 (79)
        • SWEA (29)
      • Computer Science (40)
        • 알고리즘 (14)
        • 컴퓨터 네트워크 (18)
        • 이산수학 (8)
      • Developer (47)
        • 후기 (4)
        • 자료정리 (4)
        • 취업 | 취준 (9)
        • SSAFY (1)
        • 웹개발 교육 프로그램 (9)
        • TIL (20)
  • 블로그 메뉴

    • 홈
    • Github
  • 공지사항

    • 프로그래밍 공부 중😊
  • 인기 글

  • 태그

    SWEA
    mysql
    spring boot
    리액트
    블로그 제작
    클론 프로젝트
    뉴렉처
    공식문서
    웹사이트
    ZeroCho
    Til
    컴퓨터네트워크
    프로그래머스
    구현
    d3
    타입스크립트
    강의내용정리
    알고리즘
    자바스크립트
    Jiraynor Programming
    Next.js
    bfs
    AWS
    플러터
    포트폴리오
    자바
    프로젝트
    React
    백준
    파이썬
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
청량리 물냉면
[SWEA|파이썬] 1215. [S/W 문제해결 기본] 3일차 - 회문1 (D3)
상단으로

티스토리툴바