문제
닭이 길을 건너간 이유는 과학적으로 깊게 연구가 되어 있지만, 의외로 소가 길을 건너간 이유는 거의 연구된 적이 없다. 이 주제에 관심을 가지고 있었던 농부 존은 한 대학으로부터 소가 길을 건너는 이유에 대한 연구 제의를 받게 되었다.
존이 할 일은 소가 길을 건너는 것을 관찰하는 것이다. 존은 소의 위치를 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 |