본문 바로가기
알고리즘/백준 solved.ac PS

[백준][solved.ac][Silver 5][Python] 14467번 : 소가 길을 건너간 이유 1

by 빛밤하늘 2021. 6. 8.
반응형

밑의 링크는 백준에서의 문제 링크입니다.

 

14467번: 소가 길을 건너간 이유 1

3번 소는 위치 1, 0, 1에서 관찰되었으므로 길을 최소 두 번 건넜음을 확인할 수 있다. 4번 소도 길을 한 번 건넜으며, 나머지 소는 길을 건넌 기록이 확인되지 않는다.

www.acmicpc.net

 

 

 

 

 

 

 

 

파이썬 코드와 결과입니다.

# readline을 사용하기 위해 import합니다.
from sys import stdin

# 첫 줄에 관찰 횟수 N을 입력합니다.
# 100 이하의 양의 정수입니다.
# 정수형으로 변환합니다.
N = int(stdin.readline())
# 소들의 위치를 저장하는 리스트 변수를 선언합니다.
# 소의 번호는 1 이상 10 이하의 정수이므로 10번까지 있습니다.
# 아직 위치가 정해져있지 않으므로 각각 None으로 초기화해줍니다.
cows = [None] * 10
# 소가 길을 건너간 최소 횟수를 저장할 변수를 선언합니다.
cross_cnt = 0

# 관찰 횟수 N만큼 반복합니다.
for watch_idx in range(N):
    # 소의 번호와 위치를 공백으로 구분해 입력합니다.
    # 위치는 0 또는 1입니다.
    # 각각 정수형으로 변환합니다.
    cow_num, left_right = map(int, stdin.readline().split(' '))
    # 소의 이전 위치를 저장하는 변수를 선언합니다.
    prev_cow_position = cows[cow_num - 1]
    # 이번에 입력된 소의 번호에 입력된 위치로 초기화해줍니다.
    cows[cow_num - 1] = left_right

    # 소의 위치가 None이 아니면서
    # 이전의 위치와 현재의 위치가 다르다면
    if prev_cow_position != None and prev_cow_position != left_right:
        # 소가 이동한 것이므로 cross_cnt에 1을 더해줍니다.
        cross_cnt += 1

# 소가 길을 건너간 최소 횟수를 출력합니다.
print(cross_cnt)

결과

 

문제를 풀고나서 카테고리를 확인해보니 정렬을 의도해서 푸는 문제였습니다.

다음에 정렬을 이용해서 한 번 더 풀어봐야겠습니다.

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

반응형

댓글