반응형
https://www.acmicpc.net/problem/14468
소가 길을 건너간 이유 2
소가 길을 지날 때 경로상 겹치게 되는 위치를 찾는 문제
※ 그림으로 보는 문제 이해
검은색 화살표 처럼 겹치게 되는 경우를 찾으라는 뜻
📌 문제 접근 포인트
1. 총 52개의 알파벳 쌍이 2개씩 나오고, 위 그림처럼 겹치는 부분을 찾아야 한다.
2. 선택한 알파벳부터, 다음 알파벳이 나올 때까지 탐색해 주자. 그리고 그 안에 있는 내용물 중에서 알파벳이 1개만 있는 것이 있다면, 경로가 겹치는 것이니 그것을 찾아주자.
3. 탐색 진행시 위 예시의 경우 A -> A' 탐색할 때 1번, B -> B' 탐색할 때 1번 해서 가운데가 총 2번 세어지니 최종 결과에선 2를 나눠주면 된다.
⚙️ 내가 푼 정답 코드
import sys
S = sys.stdin.readline().strip()
result = 0
for start in range(52): # 시작지점부터
for end in range(start+1,52): # 그뒤 까지
if S[start] == S[end]: # 알파벳이 같으면
cows = S[start:end+1] # 그 사이에 있는 소 리스트
for i in cows:
if cows.count(i) == 1: # 만일, 소가 1번이라면 경로 상에서 만나게 되므로
result += 1 # 추가
break # 같은 알파벳은 뒤에 추가로 나오지 않음
print(result // 2) # 겹치는수 셀 때 2배로 셋으니 //2 ex) -> (A,B)(B,A)
반응형
'알고리즘 풀이 > 백준' 카테고리의 다른 글
[백준 21610] 마법사 상어와 비바라기 (python) (0) | 2023.04.29 |
---|---|
[백준 2448] 별 찍기 - 11 (python) (0) | 2023.04.27 |
[백준 14667] 소가 길을 건너간 이유 1 (python) (0) | 2023.04.27 |
[백준 15685] 드래곤 커브(python) (0) | 2023.04.25 |
[백준 13909] 창문 닫기 (python) (0) | 2023.04.25 |
댓글