티스토리 뷰
반응형
https://www.acmicpc.net/problem/17609
17609번: 회문
각 문자열이 회문인지, 유사 회문인지, 둘 모두 해당되지 않는지를 판단하여 회문이면 0, 유사 회문이면 1, 둘 모두 아니면 2를 순서대로 한 줄에 하나씩 출력한다.
www.acmicpc.net
⊙ 문제
⊙ 입력
⊙ 출력
⊙ 예제 입출력
⊙ 알고리즘 분류
- 구현
- 문자열
- 그리디 알고리즘
- 두 포인터
⊙ 문제 접근 과정
여러 체크포인트 변수를 생성하고 활용하여 회문인지 유사회문인지 그 외인지 검사했다.
회문일 경우 여러 체크포인트가 필요 없다.
유사회문 검사 경우에 복사본을 이용했는데 그때 여러 체크포인트가 필요했다.
⊙ 문제 풀이
T = int(input()) #반복횟수
for _ in range(T):
check = 0 #초기화
indx = 0
s1 = input() #값 입력받기
s2=s1 #복사본 생성
for i in range(int(len(s1)/2)): #검사
if(s1[i] != s1[len(s1) -i -1]):
check = 2 #대칭이 아니면 해당 인덱스 저장, 체크 표시
indx = i
break
if(not check): print(0) #체크가 안 되어 있다면 회문
else:
check = 0 #초기화
check1 = 0
check2 = 0
indx2 = len(s1)-indx-1 #해당 인덱스 반대편 인덱스 위치 저장
s1 = s1[:indx] +s1[indx+1:] #대칭이 아닌 요소 지우기
s2 = s2[:indx2] + s2[indx2+1:]
for i in range(int(len(s2)/2)): #검사
if(s2[i] != s2[len(s2) -i -1]): check1=2
if(s1[i] != s1[len(s1) -i -1]): check2=2
if(check1+check2 == 4): check=2
if(not check): print(1) #체크 X시 유사회문
else: print(2) #그 외
⊙ 결과
⊙ 마무리
NONE
좋아요는 로그인하지 않아도 누를 수 있습니다!
728x90
반응형
'백준 온라인 저지 [BOJ] > PYTHON [파이썬]' 카테고리의 다른 글
[백준(BOJ)] 4673번 : 셀프 넘버 - PYTHON[파이썬] (0) | 2021.08.31 |
---|---|
[백준(BOJ)] 1956번 : 운동 - PYTHON[파이썬] (0) | 2021.08.10 |
[백준(BOJ)] 15552번 : 빠른 A+B - PYTHON[파이썬] (0) | 2021.08.10 |
[백준(BOJ)] 14681번 : 사분면 고르기 - PYTHON[파이썬] (0) | 2021.08.10 |
[백준(BOJ)] 2753번 : 윤년 - PYTHON[파이썬] (0) | 2021.08.10 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 우종정
- BFS
- 정답
- 자바
- Python
- 파이썬
- 문자열
- OS
- Web
- CPP
- py
- 쉽게배우는
- JS
- 자바스크립트
- 연습문제
- 답
- 그리디
- 쉽게 배우는 자바 프로그래밍
- C++
- 운영체제
- 백준
- java
- 구현
- 쉽게배우는자바프로그래밍
- 풀이
- 알고리즘
- 해답
- 프로그래머스
- 정리
- 정렬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함