본문 바로가기
알고리즘 풀이/백준

[백준 14468] 소가 길을 건너간 이유 2 (python)

by char_lie 2023. 4. 27.
반응형

https://www.acmicpc.net/problem/14468

 

14468번: 소가 길을 건너간 이유 2

존의 농장에는 원형 목초지가 있고, 그 둘레에 길이 둘러져 있다. 존의 소는 매일 아침 이 길을 건너가 풀을 먹고 저녁에 다시 길을 건너가 헛간으로 돌아간다. 이 소들은 자신의 습관대로 매일

www.acmicpc.net

소가 길을 건너간 이유 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)
반응형

댓글