본문 바로가기
코딩테스트 파이썬

14467 소가 길을 건너간 이유

by 백엔드 개발자 2021. 7. 16.

문제

닭이 길을 건너간 이유는 과학적으로 깊게 연구가 되어 있지만, 의외로 소가 길을 건너간 이유는 거의 연구된 적이 없다. 이 주제에 관심을 가지고 있었던 농부 존은 한 대학으로부터 소가 길을 건너는 이유에 대한 연구 제의를 받게 되었다.

존이 할 일은 소가 길을 건너는 것을 관찰하는 것이다. 존은 소의 위치를 N번 관찰하는데, 각 관찰은 소의 번호와 소의 위치 하나씩으로 이루어져 있다. 존은 소를 10마리 가지고 있으므로 소의 번호는 1 이상 10 이하의 정수고, 소의 위치는 길의 왼쪽과 오른쪽을 의미하는 0과 1 중 하나다.

이 관찰 기록을 가지고 소가 최소 몇 번 길을 건넜는지 알아보자. 즉 같은 번호의 소가 위치를 바꾼 것이 몇 번인지 세면 된다.

입력

첫 줄에 관찰 횟수 N이 주어진다. N은 100 이하의 양의 정수이다. 다음 N줄에는 한 줄에 하나씩 관찰 결과가 주어진다. 관찰 결과는 소의 번호와 위치(0 또는 1)로 이루어져 있다.

출력

첫 줄에 소가 길을 건너간 최소 횟수를 출력한다.

 

필요하다고 생각한 변수로

1 소의 현재 길 위치 배열

2 번호마다 이동한 횟수 배열

3 N

4 번호, 길 변수

4가지정도를 생각했다. 문제를 보면 3번째 소가 이동한 횟수가 2번이라고 나온다. 즉 처음에 이동한 길을 횟수로 쳐주지 않는다는 사실을 깨달았고, 소의 현재 길 위치 배열을 만들 때 0이 아니라 None으로 초기화했다.

그리고 최소값이라고 나와서 소들 사이의 최소값이 아니라 그냥 총 이동한 횟수를 물어보는 문제였다.

 

풀이 

 

#N입력
n=int(input())
#현재 길 위치배열
navi= [None for _ in range(11)]
#이동한 횟수 배열
count=[0]*11

for i in range(n):
    num
, go=map(int,input().split())
   
#navi의 현재 길 위치와 입력받은 go가 다른경우
   
if navi[num]!=None and navi[num]!=go:
       
#위치 갱신 및 카운트 증가
       
navi[num]=go
        count[num]+=
1
   
else:
        navi[num] = go
total=
0

print(sum(count))

 

 

'코딩테스트 파이썬' 카테고리의 다른 글

알고리즘 푸는 방법  (0) 2021.07.19
시간 복잡도와 공간 복잡도  (0) 2021.07.16
12933 오리문제 (파이썬)  (0) 2021.07.16