Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Enhanced Input System
- 프메
- R
- Bootstrap4
- 정글사관학교
- 카렌
- EnhancedInput
- 미니프로젝트
- 스마일게이트
- JWT
- node
- VUE
- 스터디
- 언리얼뮤지컬
- 데이터베이스
- Ajax
- 게임개발
- 알고풀자
- 디자드
- 파이썬서버
- 언리얼프로그래머
- 레베카
- 으
- flask
- Jinja2
- Unseen
- Express
- 마인크래프트뮤지컬
- 언리얼
- 프린세스메이커
Archives
- Today
- Total
Today, I will
[SWEA][파이썬] 회문, 파이썬에서 2차원 배열 deepcopy, .strip()을 통한 ValueError: invalid literal for int() with base 10 해결 본문
Computer Science/알고리즘
[SWEA][파이썬] 회문, 파이썬에서 2차원 배열 deepcopy, .strip()을 통한 ValueError: invalid literal for int() with base 10 해결
Lv.Forest 2023. 12. 3. 17:27SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
💡 아이디어 세로 회문을 얻기 위해 행과 열을 바꿔주면 된다
- 소요 시간: 2시간
- 어려웠던 점: 파이썬 자체에 대한 이해도가 부족한 탓에 시간이 많이 소요됨. 슬라이싱으로 새로운 객체가 만들어지는 줄 알았으나, 2차원 배열에 대해서 deepcopy를 이용해야 함. 또한 요구한 입력값이 제대로 먹질 않아서 chat gpt에 물어보니 arr = list(input().strip())과 같이 .strip()을 써야한다 하여서 겨우 pass를 받음.
입력
3 10 10 GOFFAKWFSM OYECRSLDLQ UJAJQVSYYC JAEZNNZEAJ WJAKCGSGCF QKUDGATDQL OKGPFPYRKQ TDCXBMQTIO UNADRPNETZ ZATWDEKDQF 10 10 WPMACSIBIK STWASDCOBQ AMOUENCSOG XTIIGBLRCZ WXVSWXYYVU CJVAHRZZEM NDIEBIIMTX UOOGPQCBIW OWWATKUEUY FTMERSSANL 20 13 ECFQBKSYBBOSZQSFBXKI VBOAIDLYEXYMNGLLIOPP AIZMTVJBZAWSJEIGAKWB CABLQKMRFNBINNZSOGNT NQLMHYUMBOCSZWIOBINM QJZQPSOMNQELBPLVXNRN RHMDWPBHDAMWROUFTPYH FNERUGIFZNLJSSATGFHF TUIAXPMHFKDLQLNYQBPW OPIRADJURRDLTDKZGOGA JHYXHBQTLMMHOOOHMMLT XXCNJGTXXKUCVOUYNXZR RMWTQQFHZUIGCJBASNOX CVODFKWMJSGMFTCSLLWO EJISQCXLNQHEIXXZSGKG KGVFJLNNBTVXJLFXPOZA YUNDJDSSOPRVSLLHGKGZ OZVTWRYWRFIAIPEYRFFG ERAPUWPSHHKSWCTBAPXR FIKQJTQDYLGMMWMEGRUZ |
출력
#1 JAEZNNZEAJ #2 MWOIVVIOWM #3 TLMMHOOOHMMLT |
.strip()
오류의 원인을 찾지 못하다가 chat gpt의 대답을 통해 깨우치게 되었다.
Traceback (most recent call last):
File "/Users/abc/Documents/study/algo/test3.py", line 4, in <module>
n,m = map(int, input().split())
ValueError: invalid literal for int() with base 10: 'WPMACSIBIK'
Traceback (most recent call last):
File "/Users/abc/Documents/study/algo/test3.py", line 2, in <module>
T = int(input())
ValueError: invalid literal for int() with base 10: ''
에러 메시지인 ValueError: invalid literal for int() with base 10: 입력에서 정수로 변환할 수 없는 값이 있다. ''는 비어있는 문자열을 정수로 변환하려고 시도했을 때 발생하는 오류. 즉 나의 경우 i = int(input())로 정수를 입력받고 있는데, 입력값이 숫자가 아니거나 비어있을 경우였기에 이런 에러가 발생.

파이썬 deepcopy
사용법은 해당 블로그에서 참고하였다.
[python] 얕은 복사, 깊은 복사 + 슬라이싱[:]
아주 최소한만 복사한다. 메모리에 생성되는 것이 아닌 '참조'만 복사한 것을 의미한다.mutable한 객체일 경우에 같은 주소를 바라보게 된다. 슬라이싱과 헷갈릴 수 있으므로 예제를 살펴보자.b = a
velog.io
import copy
T = int(input())
for _ in range(T):
n,m = map(int, input().split())
board = []
isValid = False
for k in range(n):
arr = list(input().strip())
board.append(arr)
# 가로 회문 확인
for kk in range(len(arr)-m+1):
if isValid:
break
temp = arr[kk:m+kk]
if temp == temp[::-1]:
isValid = True
answer = ''.join(temp)
print(f'#{_+1} {answer}')
# 세로 회문 확인
if not isValid:
new_board = copy.deepcopy(board)
# new_board 생성
for ids in range(len(board)):
row_list = board[ids]
for idx, g in enumerate(row_list):
new_board[idx][ids] = board[ids][idx]
for new_k in range(len(new_board)):
if isValid:
break
new_arr = new_board[new_k]
for new_kk in range(len(new_arr) - m + 1):
temp = new_arr[new_kk:m + new_kk]
if temp == temp[::-1]:
isValid = True
answer = ''.join(temp)
print(f'#{_+1} {answer}')
break
'Computer Science > 알고리즘' 카테고리의 다른 글
[SWEA 완전탐색] 파리퇴치(4중 포문 이용!) (0) | 2023.12.22 |
---|---|
[DFS, python] 연속된 1의 개수 세기 (2) | 2023.12.21 |
[SWEA][파이썬] 전기버스 (1) | 2023.12.03 |
[Python] 백준 빗물 14719 - Monotonic stack (0) | 2023.04.11 |
[Python] 백준 철로(13334) 문제 해결 과정 (투포인터에서 우선순위 큐) (0) | 2023.03.15 |